Qt4,想说爱你不容易

QT的学习第四部分 本文介绍Qt与Linux V4L2框架下摄像头及音视频处理实现。基于Qt的QCamera与QCameraViewfinder类可便捷实现预览与拍照,需在pro文件添加multimedia和multimediawidgets插件。通过V4L2框架可深入控制摄像头参数、缓冲队列及图像采集流程,实现高精度视频捕获。结合FFmpeg与mplayer工具,可在Linux下完成音视频播放、格式转换与流媒体处理。整体涵盖从硬件接口到应用层开发的完整技术链路,适用于嵌入式多媒体系统开发。 阅读详情
  • 出处:统一教学网
  • 作者:tonylk 的 Blog      

著名的QT库前一阵子升级到4.xx版本 了,我目前在开发的一个基于QT3的软件,由于受到QThread的各种困扰,因此打算尝试将代码升级到QT4,但是当我实际开始升级工作后,才发现 QT3和QT4的变化实在是太大了,最后导致我几乎修改了程序中的所有文件,幸好目前开发工作还只是开了个头,只修改了40多个类,但那也足足花了我一周 多时间,下面简单的说说QT3升级到QT4时的注意点:

      

        1)QT4中提供了大量新控件,虽然它也保 持了旧的控件,并命名为Qt3XXX,但是这样的控件没准在今后的哪个QT版本中就不被支持了,所以还是换吧,控件替换的工作是巨大的,这些新的控件使用 了新的方法、属性、和事件名称,虽然是比以前更规范了,但是对于升级旧代码来说,则增加了大量工作。
        2)既然要更新控件,那么你就需要使用QDesigner工具来重新画界面了,OK,重画只是纯体力劳动,好说。
        界 面画好后,使用uic来根据界面生成代码文件,QT3的uic可以自动生成.h和.cpp文件,假设你在制作一个名叫TestDialog的对话框,那么 QT3的uic生成的文件则是TestDialog.h和TestDialog.cpp,所有的界面初始化工作都在cpp文件中执行,之后程序的逻辑代码 也将加入这个文件,那么对于一个已经完成逻辑功能的对话框来说,如果要修改界面布局,你就不得不重新用uic生成.h和.cpp文件,然后将其中界面相关 的代码复制到你已经修改的文件中,此时决不能直接用uic直接生成到修改过的文件上,因为那样你的代码将全部被冲掉。
        这一点上,QT4进步了,因为QT4中推荐的方法是,使用uic根据界面文件生成一个h文件, 以 前面的TestDialog为例,生成的文件叫做ui_TestDialog.h,其中会实现一个名为Ui_TestDialog的类,包含了界面所有控 件的加载功能,而程序的逻辑功能依然使用TestDialog.h,和TestDialog.cpp这两个功能,并在TestDialog.h中用多重继 承的方法,从刚才的Ui_TestDialog类来继承出实际的TestDialog类,在TestDialog的构造函数中,只需要使用Ui_TestDialog::setupUi()方法,就可以构建出整个界面,并且由于是从Ui_TestDialog继承来的,在逻辑代码中也可以方便的访问所有控件。
        从这一点来说,QT4的方法是个巨大的进步,因为ui_xxx.h中不再包含任何用户自己写的代码了,此时你想更改界面布局的话,只需要用QDesigner修改界面,再用uic生成ui_xxx.h文件,直接替换原文件就可以了。
当然,QT的ui_xxx.h文件还有其它的使用方法,不一定要使用多重继承的方法,在这里我只是介绍了我认为最方便的方法。
另外,如果你所设计的界面比较复杂,需要将某部分界面独立在其它Widget中设计和写逻辑代码,那么最上层的Dialog的ui_xxx.h文件还是需要手动修改的,不过相对于QT3,这样的修改还是非常简单的。
最后要指出的是,虽然是个好设计,但是由于和QT3的巨大区别,这导致了我重写所有界面相关的代码。。。。痛苦哦。

        3) QThread发生了巨大的改变,新的QThread是从QObject继承而来的,因此可以在QThread中直接使用signal/slot了,它们 是线程安全的。以前的QApplication::postEvent()方法没有了,我以前实现的一整套防止线程阻塞的机制也不再需要了。不过确实是很 不错进步。
        4)QSocketDevice这样的底层socket连接控件没有了,QSocket也没有了,换而之的是QTcpSocket和QTcpServer,QTcpSocket即可以用异步方式调用,又可以在线程中,用同步方式等待数据到达。
5) QT的h文件不再混在一起了,而是分成Core,Gui,Network,Xml,OpenGL等等子文件夹,所有include都需要重写了,写成 “#include <QtCore/QObject>”的样子。不过相对于前面的修改来说,这些实在不足挂齿了。

主要的更改就这些了,最后总结一下,如果你的基于QT3的代码并没有遇到什么解决不了的功能,那么最好还是不要升级到QT4了,除非你很喜欢被折磨。。。
MATLAB配置MinGW编译器的完整指南 本文提供了在Windows系统上为MATLAB配置MinGW编译器的完整指南。详细介绍了通过MATLAB附加功能管理器在线安装和手动离线安装两种核心方法,并重点说明了如何解决常见的“未找到支持的编译器”等错误。指南包含从版本检查、环境变量配置到最终使用mex命令验证的每一步,帮助用户顺利完成MATLAB与MinGW的集成,以支持C/C++代码编译。 阅读详情

相关推荐

企业AI Agent的审计与合规

本文将带你从**“0基础理解企业AI Agent审计与合规”到核心概念梳理:用大白话+学术定义拆解什么是“企业AI Agent”、“可审计性(Auditability)”、“可解释性(Explainability,XAI)≠可审计性”、“合规性(Compliance)”、“黑盒拆解的三层维度”等硬核但必须掌握的概念;风险与合规背景:从**内部风险(数据泄露、误操作、模型偏差)和。

Java大师兄的博客 301

嵌入式,想说爱你,又想说恨你!

经过几天的努力,这几天很累,熬夜和查找资料。总之,虽然是自学的嵌入式,可是效果还可以,费了很大劲。爱你,又想说恨你。可是要想以后有一份不错的工作来养家糊口,只能坚持不懈的努力。正如我一个中兴的朋友说的好:人都会有目标,可是要坚持不懈的努力那就很难。这几天一直在忙着QTOPIA4.2.1在2410上面的移植,平台的差异,编译器的问题,可是我最后万万没有想到,还是得到一个论坛大哥的帮助,还得以

3933

Ubuntu的初步环境配置(VMware)

4.屏幕显示不全解决完后,在试用Ubuntu里面,直接双击“安装Ubuntu 20.04.6 LTS”。如果不存在“屏幕显示不全”的问题,直接点击安装即可,大致安装步骤与以下步骤类似。15.点击现在重启,重启成功后,会出现“清除安装介质”的问题。19.此时点开火狐,可以上网,但只可输入英文,不可以输入中文,具体解决方法见3.2。3.进入安装界面,此时可能会出现“屏幕显示不全”的问题,具体解决方法见3.1。8.选择“正常安装”、“安装Ubuntu时下载更新”,点击继续。最后,点击保留更改,设置成功。

森菌蛙诺的博客 2276

对于Qt:QTableWidget常见属性以及QTableWidgetItem类的解析

本文详细介绍了Qt中的QTableWidget控件和QTableWidgetItem类,它们是处理二维表格数据的核心组件。主要内容包括: QTableWidgetItem类详解: 核心方法:row()/column()获取位置,setText()/text()设置文本,setIcon()设置图标 样式控制:setTextAlignment()对齐方式,setFont()字体,setSizeHint()尺寸 QTableWidget核心操作: 单元格管理:item()获取单元格,setItem()设置单元格

2503_92929084的博客 114

从‘包饺子’到‘包络线’:一个生活化比喻讲透长期与短期成本决策

本文通过饺子馆经营的生活化比喻,深入浅出地解析了长期与短期成本决策的核心逻辑。从调整人力(可变成本)到扩建厨房(固定成本),揭示了包络线理论在商业决策中的实际应用,帮助企业主在规模经济与成本控制间找到平衡点。

weixin_32006655的博客 341

基于Qwen3-14B大模型的智能UI自动化测试实践

UI自动化测试是软件工程中保障产品质量的关键环节,其核心原理是通过脚本模拟用户操作,对软件界面进行功能验证。传统方法依赖于编写和维护基于元素定位的固定规则脚本,在面对复杂交互或频繁变化的界面时,维护成本高昂。大语言模型(LLM)的出现为这一领域带来了新的技术价值,其强大的自然语言理解和代码生成能力,使得测试脚本的编写从精确编码转向了任务描述。通过将大模型作为决策大脑,结合Playwright等自动化工具作为执行器,可以构建出能够理解界面、规划操作并验证结果的智能测试系统。这种方案特别适用于处理变化频繁、逻辑

weixin_42619742的博客 303

Qt QBuffer 详解:内存缓冲区读写与实战用法

QBuffer 是 Qt 中用于内存缓冲区读写的 QIODevice 实现,可将 QByteArray 作为“文件”进行随机访问。它支持 open()、read()、write()、seek() 等操作,常用于数据序列化(配合 QDataStream)、内存加载图片、适配仅接受 QIODevice* 的 API。使用时需注意:必须先 open(),写后需 seek(0) 才能读取;若传入外部 QByteArray,其生命周期须长于 QBuffer。适用于小到中等规模内存数据处理,大文件应避免使用。

本博客分享软硬件一体化开发实战。硬件涵盖 PCB 设计、STM32 等 MCU 底层开发;软件包含 C++、Rust,Qt/QML、PyQt、Slint、TouchGFX、LVGL 各类 GUI 框架。方便软硬件开发者查阅学习。欢迎关注! 556

有限元缺陷:剪切锁死

有限元缺陷:剪切锁死

wsxww11的博客 5190

Qt_03界面类型

Qt的界面类型

u012660296的博客 193

【STK】手把手教你利用STK进行覆盖分析02-生成详细分析报告和图表

这篇文章主要针对上一篇文章中最后的案例1进行进一步的说明,详细介绍我们可以生成哪些结论性的成果。STK的Coverage模块的生成结果包括分析报告和图表两种样式,每种样式还分为动态和静态两种,也就是说,我们做完一个STK覆盖场景的仿真后,一般可以生成静态分析报告、动态分析报告、静态分析图表和动态分析图表这4种形式的分析成果,下面进行详细介绍。我们在选择了想要分析的区域或者点后,就可以利用CovDef生成分析报告了,覆盖定义的分析报告分为静态报告和动态报告两种,下面分析进行介绍: 首先我们先在左侧目标浏览器C

weixin_44184852的博客 3443

Qt 内嵌页面能显示、按钮调用桌面功能时报 Qt6WebChannel.dll?查桥接层

Qt 桌面程序里的内嵌 HTML 面板能显示静态内容,但点击“读取本地任务”才报 Qt6WebChannel.dll。先保存构建清单,用脱敏测试任务重现;页面能加载不等于 JavaScript 与 C++ 的桥接层也完整。应先确认准确弹窗,再排查模块和页面脚本。 ## Qt6WebChannel.dll 的来源与桥接组件版本 查看发行包里 Qt6Core.d

2301_78581598的博客 207

如何合法抓取TikTok视频信息和评论:完整Python爬虫教程

尽管TikTok没有开放的公共API来直接抓取视频内容和评论,开发者仍然可以通过合法的方式使用第三方API工具来获取公开数据。无论使用什么工具,都应当严格遵守TikTok的使用条款和当地的隐私法规,确保数据抓取行为符合规定。通过本文介绍的TikTok-Api库和Python技术,你可以合法地抓取公开的视频信息和评论,并进行数据存储与分析。使用这些技术时,务必确保抓取行为不会侵犯用户隐私,并遵守平台的API使用规定。

2201_76125261的博客 1710

Windows/Linux下强实时运动控制内核(二):基于Qt的Delta机械手的开发应用

强实时运动控制内核MotionRT750下Qt开发Delta机械手的完整开发流程。

weixin_57350300的博客 243

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

对于Qt:QListWidget常见属性以及QListWidgetItem类的解析

本文全面解析了Qt中的QListWidget和QListWidgetItem组件。QListWidget是用于纵向展示列表的核心控件,支持条目增删改查、排序、换行等功能;QListWidgetItem则是列表中的单个条目,可定制文本、图标、字体、对齐等属性。 文章详细讲解了: QListWidgetItem的核心方法:设置文本/字体/图标、隐藏/显示、尺寸、选中状态等 QListWidget的关键属性:当前行号、条目总数、对齐方式、间距、排序等 列表操作方法:添加/插入/删除条目、获取当前选中项等 交互信号

2503_92929084的博客 144

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Qt信号与槽机(3)

Qt信号与槽机制支持多种连接方式:一对一(信号连槽或信号连信号)、一对多(一个信号连接多个槽)及多对一(多个信号连接同一槽)。通过connect()函数实现,如connect(sender, &A::sig, receiver, &B::slot)。一对一用于单一响应,一对多可触发多个操作,多对一则实现多源统一处理,灵活高效地构建事件驱动程序。

我的博客 225

Qt信号与槽机(2)

Qt自定义信号与槽需遵循规范:信号在signals下声明,仅声明不实现;槽可位于public或全局作用域,需声明并实现。使用emit发送信号,关联须先于发射。支持参数传递与重载,参数类型和个数需匹配,信号参数可多于槽。通过教师上课、学生响应示例,演示类创建、信号槽声明、连接及触发流程,结合按钮事件实现动态联动,提升程序交互性。

我的博客 205

Qt 富文本编辑器实战(菜单 / MDI / 语法高亮)

本文系统讲解Qt中QMainWindow的五大核心组件:菜单栏、工具栏、状态栏、停靠窗口(QDockWidget)与多文档界面(QMdiArea),并深入实现富文本编辑器功能,涵盖自定义QWidgetAction、文本插入(表格/图片/列表)、段落与字符格式设置、文本查找、语法高亮(基于QSyntaxHighlighter)及拖拽文件加载等实战功能,适合作为课程大作业的完整开发框架。

2402_89341493的博客 316

Qt_05基础界面组件

Qt 基础界面组件

u012660296的博客 255

【QT】系统相关:Qt网络编程概述

网络编程的底层接口来源于操作系统提供的Socket API,属于操作系统内核提供给应用层的系统调用接口,是应用程序访问TCP/IP协议栈的唯一入口。不同操作系统平台原生Socket API接口存在差异:Linux:遵循POSIX套接字标准,socket()、bind()、listen()、accept()、send()、recv(),文件描述符模型,一切皆文件;

艾莉丝努力练剑的博客,感谢大家一直以来的对艾莉丝的支持和鼓励,uu们如果对C/C++方向感兴趣的话,可以通过艾莉丝主页的微信名片加艾莉丝的好友,和努力练剑的艾莉丝一起加油! 432

<QtMath> 详解:Qt 数学函数的分类、坑点与代码示例

QtMath>是 Qt 提供的一个轻量级数学工具头文件。它本身并不是一个独立的“数学库”,而是在 C/C++ 标准数学函数之上,叠加了一层针对 Qt 类型系统与跨平台一致性的封装。如果你曾经疑惑“为什么 Qt 要重复造轮子,不直接用<cmath>”,答案主要藏在qreal和跨平台行为的一致性里。

qq_40170041的博客 261

静态库导入Qt QCustomPlot第三方表格图形库

静态库 + .h文件。

qq_59167692的博客 29

兰亭妙微ui设计公司分享:Qt桌面界面怎样把状态和操作设计清楚

左侧显示设备列表,中间展示当前设备的运行数据,右侧提供启动和暂停。列表刚切换,详情还没更新时,也要让等待状态足够明确,避免用户拿上一台设备的数据判断当前情况。视觉上可以用稳定的位置帮助确认对象身份,把设备名称、连接状态和更新时间放在容易找到的区域。界面方案刚开始时,可以挑一个范围明确的场景与开发一起验证,例如选择设备、修改一个参数、提交并看到结果。空间收窄时,次要面板是否可以折叠,工具栏是否可以分组,主操作是否仍有固定位置,都需要有清楚的取舍。只能查看的用户,和可以修改参数的用户,看到的入口可能不同。

lanlanwork12的博客 185

Qt 桌面程序按钮正常、语音播报时报 Qt6TextToSpeech.dll:部署与语音引擎分开查

一个 Qt 桌面程序的文本展示和按钮点击都正常,执行语音播报时却报 Qt6TextToSpeech.dll。先保留构建产物清单,用一句不含个人信息的测试文本复现。库文件缺失与系统没有可用语音引擎,是两个不同层次。 ## Qt6TextToSpeech.dll 在语音调用链中的具体作用 Qt TextToSpeech 模块提供应用访问语音合成引擎的接口,本身不

2301_78581598的博客 104

对于Qt:QDateTimeEdit常见属性以及QDateTime类的解析

本文详细介绍了Qt中的日期时间处理核心类(QDate、QTime、QDateTime)和日期时间编辑控件(QDateTimeEdit)的使用方法。主要内容包括: 三大基础类详解: QDate:处理年/月/日,提供日期创建、验证、计算和格式化功能 QTime:处理时/分/秒,支持时间运算和格式转换 QDateTime:组合日期和时间,支持时区转换和时间戳处理 QDateTimeEdit核心属性: dateTime/date/time:分别获取或设置完整日期时间、纯日期或纯时间 displayFormat:自定

2503_92929084的博客 208

【qt openGL入门笔记】OSG着色器、纹理、变换

本篇的目的仅是为了展示OSG场景图下也可以单独处理着色器、纹理、变换。

ocy的博客 216

QT元数据

在moc_todomodelviewmodel.cpp中qt_meta_stringdata_CLASSTodoModelViewModelENDCLASS(太长了,记作①),qt_meta_data_CLASSTodoModelViewModelENDCLASS(记作②)以及QMetaObject(③)是存放元数据的具体结构。QT作为一个流行的C++开发框架,保留了C++代码执行效率高的同时,也提供了类似动态语言的反射机制,能够实现很多原生c++不能做到的事情,这些要归功于QT moc出来的元数据。

yuanshenqiang的博客 197
下一篇: slickedit for linux手动破解方法
yang_dk
博客等级 码龄21年 39粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值