关于使用QStackedWidget加载数据卡顿问题

快乐男孩xp 2022-11-17 17:23:43

1.首先我定义了两个QWidget窗口,并且将它们两个添加到了QStackedWidget

2.我在其中一个QWidget窗口中使用了QSerialPort串口,将串口读取到的数据进行接收处理和实时显示

3.这个数据的显示是实时变化更新的,但是会有卡顿,而且在显示界面点击其他控件也会有所卡顿。

请教一下,会是什么原因造成的

...全文
716 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
blueman8888 2023-02-13
  • 打赏
  • 举报
回复

加线程,从子线程读取串口数据,然后通过信号槽显示到界面上就没啥问题

木风可可 2022-11-18
  • 打赏
  • 举报
回复

加线程

czchgl 2022-11-18
  • 打赏
  • 举报
回复

耗时操作请在线程中执行
界面ui显示是主线程,是一个循环(1),main中的(exce)
你在主线程(1)中创建一个死循环(2)
会导致(1)循环不连续,一直在(2)中执行,结果就是ui卡死

耗时操作会导致ui卡顿就可以理解了吧

火花20180731 2022-11-18
  • 打赏
  • 举报
回复

一个线程内部必然是顺序执行的,一项操作没跑完,其它操作只能等着。
这和你用不用QStackedWidget没有任何关系。
从道理上来讲,一项操作的执行时间超过20ms就不适宜出现在主线程里。

基于QT框架构建的局域网即时通讯系统,是一套具备完整源码的跨平台通信解决方案。该方案采用模块化架构设计,涵盖网络传输、界面交互、数据管理等核心功能模块,为开发者提供可扩展的通信系统开发范例。 在技术实现层面,系统运用QT内置的网络通信模块,支持TCP与UDP双协议栈。TCP协议确保关键数据传输的可靠性,适用于文件传输等场景;UDP协议则满足实时消息传输的低延迟需求。通过QNetworkDatagram类实现数据包的高效收发,结合QNetworkAccessManager完成网络会话管理。 多线程处理机制采用QThreadPool与QFuture实现任务并行化,将网络I/O操作与界面渲染分离,有效避免界面卡顿数据序列化过程通过QByteArray与QDataStream配合完成,支持结构化数据与原始字节流的相互转换。 界面架构基于QWidgets体系,采用MVC设计模式组织聊天窗口、联系人列表等视觉元素。通过信号槽机制实现组件间的事件驱动通信,例如消息到达事件自动触发界面更新。布局管理系统运用QSplitter与QStackedWidget实现动态界面调整。 在数据持久化方面,系统提供QSqlDatabase与SQLite的集成方案,支持聊天记录的本体存储与快速检索。安全传输层可通过集成QCryptographicHash实现端到端加密,配合QSSLSocket构建安全通信通道。 系统扩展性体现在可插拔的模块设计,开发者能够基于QPluginLoader机制动态加载功能模块。群组通信功能通过多播技术实现,好友关系管理采用基于SQL的关系模型。事件处理循环通过QEventLoop实现异步操作管理,确保系统响应实时性。 该代码库展示了分布式系统开发中的关键技术实践,包括进程间通信、内存管理优化、异常处理机制等。通过对源码的深入研究,开发者可掌握现代桌面应用程序的全栈开发流程,并具备构建企业级通信系统的能力。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!

21,480

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧