我正在尝试将QSystemTrayIcon模块移动到单独的线程中。运行应用程序时出现以下错误。 Initialize()方法addAction导致错误。
QWidget:必须在QPaintDevice之前构建QApplication
我的示例代码段:
声明了全局变量 QMenu myMenu;
头文件中的成员变量 QAction * openFile;
在构造函数中 openFile = new QAction(parent);
Initialize()
{
myMenu.addAction(openFile);
}
void myApp::run()
{
Initialize()
}
答案 0 :(得分:0)
您必须不使用主线程之外的任何与GUI相关的类,即创建一个QApplication
。因此,您无法单独移动QSystemTrayIcon
内容线。不,没有解决方法。
答案 1 :(得分:0)
您正在向后解决此问题。原因是“如果某些功能在后台菜单中运行,TrayIcon菜单不显示,将在流程完成后显示。”是因为你在等待事情时阻止了GUI线程。不要通过等待事物来阻止GUI线程。大多数Qt提供的信号在事情完成时(当它们成功或失败时)触发。这些是你应该使用的非阻塞API。