QT应用程序接口冻结



我在嵌入式应用程序中遇到了一些问题。这是一个包含一个QTimeEdit的页面,该页面计算每秒的时间,一些复选框和一些QLineEdit s,每秒刷新。

工作了几分钟后,即使应用程序仍在运行,我也会看到接口的冻结。如果尝试按下按钮或复选框,则会出现违规消息:

例外"访问违规"(14):thread-id = 05D80002(pth = 8af6109c),proc-id = 04A90002(pprc = 91431714)'nmb3.exe',vm-active',vm-active = 04a90002(pprc = 91431714)nmb3.exe'pc = 407ea307(qtgui4.dll 0x0005a307)ra = 40d6c82c(qtgui4.dll 0x005dc82c)sp = 01c1b928,bva = 0000000004

例外与qtgui4.dll有关。我检查了是否发生了虚拟内存的饱和度,但这不是导致冻结的问题。

如果我避免更新QTimeEdit,则不会发生冻结,但我不明白为什么。

您应该将计时器移至MainWindow类,将传感器处理程序保持在分离的线程中。

传感器处理程序应:

  • 存储数据
  • 向窗口发出"数据准备"信号

然后,每一秒钟,MainWindow中的计时器将:

  • 阅读传感器处理程序的数据
  • 更新GUI

(确保您使用的是线程安全对象或管理关键部分)

最新更新