繁体   English   中英

Qt GUI在Windows XP上无响应

[英]Qt GUI non responsive on Windows XP

我有一个Qt应用程序,它获取串行数据并显示在仪表板类型的GUI中。 该程序的基本结构如下:

创建EDIT SerialPort(继承自QIODevice)对象,并将它们的readyRead信号连接到插槽。 当有新数据输入时,它将通过消息处理程序解释并通过程序发送。 最终,数据进入GUI层,并在其中显示给用户。

该程序可以在Windows 7中正常运行,但是当我在运行Windows XP的Panasonic硬书上运行该程序时,该程序可以正常运行,但是过一会儿GUI停止更新。 我的意思是,当输入新数据时,GUI不会重绘,除非用户单击按钮或调整大小。 我想知道这种行为的一些可能原因是什么。 我以为可能是Main线程被所有传入的串行数据淹没了,但是我认为GUI无论如何都在单独的线程中运行。 我错了吗? 是否有人对可能发生的事情有任何想法?

如果SerialPortIO不在其自己的线程中,则它在等待新数据时可能会阻塞。 我没有使用过特定的Serial类,但通常来说,数据流可能应该在其自己的线程中。

您可以通过定期调用qApp->processEvents()来强制程序对GUI进行更多更新,并且GUI应该进行更新。

另外,在代码中放入一些qDebug语句,尤其是在您怀疑函数调用次数过多或不足的函数顶部。

使用以下行,它使得真正跟踪多线程应用程序中发生的事情变得非常容易:

qDebug() << Q_FUNC_INFO;

希望能有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM