QMenu QThread实施错误

时间:2012-05-10 18:28:18

标签: qt

我正在尝试将QSystemTrayIcon模块移动到单独的线程中。运行应用程序时出现以下错误。 Initialize()方法addAction导致错误。

QWidget:必须在QPaintDevice之前构建QApplication

我的示例代码段:

声明了全局变量      QMenu myMenu;

头文件中的成员变量      QAction * openFile;

在构造函数中      openFile = new QAction(parent);

Initialize() 
{
myMenu.addAction(openFile);
}

 void myApp::run()
 {
     Initialize()
 }

2 个答案:

答案 0 :(得分:0)

您必须使用主线程之外的任何与GUI相关的类,即创建一个QApplication。因此,您无法单独移动QSystemTrayIcon内容线。不,没有解决方法。

答案 1 :(得分:0)

您正在向后解决此问题。原因是“如果某些功能在后台菜单中运行,TrayIcon菜单不显示,将在流程完成后显示。”是因为你在等待事情时阻止了GUI线程。不要通过等待事物来阻止GUI线程。大多数Qt提供的信号在事情完成时(当它们成功或失败时)触发。这些是你应该使用的非阻塞API。