简介
使用QTextEdit写了个串口工具, 当串口有数据时通过一个signal传给slot,在 slot中调用QTextEdit的append(text)来增量显示串口数据,当串口关闭时调用clear()来清空显示。
结果发现append调用后显示的数据会有重复。
分析
分析代码,在open串口后,会调用connect,把串口数据传到onSerialData函数中,一个signal会多次调用slots,导致数据重复。
connect(m_serialPort, SIGNAL(readyReadSig(QString)), this, SLOT(onSerialData(QString)));
解决
connect最后添加参数Qt::UniqueConnection确保signal一一对应slots,不会重复调用。
connect(m_serialPort, SIGNAL(readyReadSig(QString)), this, SLOT(onSerialData(QString)), Qt::UniqueConnection);
Qt 简介
一、定义
Qt 是一个跨平台的 C++ 应用程序开发框架,由挪威 Trolltech 公司开发,后被 Digia 收购,现由 The Qt Company 维护。它为开发者提供了丰富的类库和强大的开发工具,可用于创建各种类型的应用程序,包括桌面应用、移动应用、嵌入式系统应用等。
二、主要特点
(一)跨平台性
Qt 支持多种主流操作系统,如 Windows、Mac OS、Linux、iOS、Android 等。这意味着开发者只需编写一次代码,就能在不同的平台上进行编译和运行,极大地提高了开发效率,降低了开发成本。例如,一个使用 Qt 开发的办公软件,可以轻松地在 Windows 电脑和 Android 平板上同时使用。
(二)丰富的类库
Qt 拥有大量功能强大的类库,涵盖了图形界面、网络编程、数据库操作、多媒体处理等多个领域。以下是一些常见类库的介绍:
图形界面类库:以 QWidget 类为基础,它是所有用户界面对象的基类。通过继承 QWidget 类,可以创建各种窗口和控件,如按钮(QPushButton)、文本框(QLineEdit)、标签(QLabel)等。开发者可以方便地设计出美观、易用的图形用户界面(GUI)。
网络编程类库:提供了 QTcpSocket 和 QTcpServer 等类,用于实现基于 TCP 协议的网络通信;QUdpSocket 类则用于实现 UDP 协议的通信。利用这些类,开发者可以轻松地开发出网络聊天程序、文件传输工具等网络应用。
数据库操作类库:支持多种数据库系统,如 MySQL、SQLite、PostgreSQL 等。通过 QSqlDatabase、QSqlQuery 等类,开发者可以方便地进行数据库的连接、查询、插入、更新和删除等操作。
多媒体处理类库:包含了音频和视频播放、录制等功能。例如,QMediaPlayer 类可用于播放各种格式的音频和视频文件,开发者可以开发出多媒体播放器、视频编辑工具等应用。
(三)信号与槽机制
信号与槽是 Qt 中一种独特的事件处理机制,用于实现对象之间的通信。当一个对象的状态发生变化时,它会发出一个信号;而另一个对象可以通过连接这个信号到自己的一个槽函数,当信号发出时,槽函数会被自动调用。这种机制使得对象之间的耦合度降低,提高了代码的可维护性和可扩展性。例如,当用户点击一个按钮时,按钮会发出一个 clicked() 信号,开发者可以将这个信号连接到一个自定义的槽函数,在槽函数中实现相应的处理逻辑。
(四)集成开发环境(IDE)
Qt 提供了 Qt Creator 作为其集成开发环境。Qt Creator 具有代码编辑、编译、调试等功能,并且提供了可视化的界面设计工具,开发者可以通过拖放控件的方式快速设计出用户界面。同时,Qt Creator 还支持多种编程语言,如 C++、QML 等,方便开发者进行不同类型的开发。
三、应用领域
(一)桌面应用开发
Qt 可以用于开发各种类型的桌面应用程序,如办公软件、图形设计工具、游戏等。由于其跨平台性,开发的桌面应用可以在不同的操作系统上运行,满足不同用户的需求。例如,著名的办公软件 WPS Office 就使用了 Qt 框架进行开发。
(二)移动应用开发
在移动开发领域,Qt 同样表现出色。它支持 iOS 和 Android 等主流移动操作系统,开发者可以使用相同的代码库开发出跨平台的移动应用。例如,一些地图导航应用、音乐播放应用等都可以使用 Qt 进行开发。
(三)嵌入式系统开发
Qt 具有低功耗、高性能的特点,非常适合用于嵌入式系统开发。在工业控制、智能家居、汽车电子等领域,Qt 可以帮助开发者快速开发出稳定、可靠的嵌入式应用。例如,汽车的中控系统、智能家居的控制终端等都可以使用 Qt 进行开发。
(四)游戏开发
虽然 Qt 不是专门的游戏开发框架,但它提供了图形绘制、动画效果等功能,开发者可以使用 Qt 开发一些小型的游戏,如棋牌游戏、益智游戏等。同时,Qt 还支持与 OpenGL 等图形库集成,用于开发更复杂的 3D 游戏。
四、开发流程
(一)环境搭建
下载并安装 Qt 开发工具包(Qt SDK),其中包含了 Qt 库、Qt Creator 等开发工具。
根据自己的开发需求,选择合适的编译器和开发平台。
(二)创建项目
打开 Qt Creator,选择 “File” -> “New File or Project”,根据项目类型选择相应的模板,如 “Qt Widgets Application” 用于创建桌面 GUI 应用程序,“Qt Quick Application” 用于创建基于 QML 的应用程序。
(三)界面设计
可以使用 Qt Creator 的可视化界面设计工具,通过拖放控件的方式设计用户界面;也可以手动编写代码来创建界面。
(四)编写代码
在 Qt Creator 中打开源文件,使用 C++ 或 QML 编写应用程序的逻辑代码。例如,在 C++ 代码中实现信号与槽的连接、处理用户输入等功能。
(五)编译和调试
点击 Qt Creator 中的编译按钮,对项目进行编译。如果编译过程中出现错误,需要根据错误信息进行修改。编译成功后,可以使用 Qt Creator 的调试功能对应用程序进行调试,查找和修复代码中的问题。
(六)发布应用
在开发完成并测试通过后,可以将应用程序发布到目标平台上。根据不同的平台,需要进行相应的打包和部署操作。
五、学习资源
(一)官方文档
Qt 官方网站提供了详细的文档和教程,包括类库参考、开发指南、示例代码等。官方文档是学习 Qt 的重要资源,开发者可以根据自己的需求进行查阅。
(二)书籍
市面上有很多关于 Qt 开发的书籍,如《Qt Creator 快速入门》《Qt 5 开发及实例》等。这些书籍系统地介绍了 Qt 的基础知识和开发技巧,适合初学者和有一定经验的开发者阅读。
(三)在线教程和社区
一些在线学习平台,如 Coursera、Udemy 等,提供了 Qt 开发的相关课程。此外,Qt 官方社区和一些技术论坛,如 Stack Overflow、Qt 中文社区等,是开发者交流和分享经验的重要场所,开发者可以在这些社区中提问、寻求帮助和学习他人的经验。
作者:帅得不敢出门 csdn原创
1万+

被折叠的 条评论
为什么被折叠?



