急求一个疑难杂症!
请问一个托盘程序,没有主窗口,只有app的消息循环和一个QSystemTrayIcon。在关机时候始终会卡在这个程序的退出上。分析原因是退出消息由于没有窗口所以没有被响应到,没有调用qApp->quit(),大概和http://lists.trolltech.com/qt-interest/2006-02/thread00702-0.html这个类似的问题。如果随便显示一个窗口,这个问题就完全没有了。但是我这个程序就是托盘程序,不要显示窗口的,请问有办法解决吗?
通过隐藏一个窗口试验过是不管用的,应该是消息没有分发给隐藏的窗口 --------------------编程问答-------------------- 那你退出时
尝试捕捉信号 然后不 要调用qApp->quit()
而是直接释放完资源后 exit(0) 看可以不可以 --------------------编程问答--------------------
QApplication a(argc, argv);
a.connect(&a, SIGNAL(aboutToQuit()), &a, SLOT(quit())); --------------------编程问答--------------------
不妨给出你的所用Qt的版本、系统的版本信息 以及测试用的例子。
如果问题可以重现,你可以去提交bug:
一个测试用例如下
#include <QtGui>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QApplication::setQuitOnLastWindowClosed(false);
QMenu * menu = new QMenu();
menu->addAction("Quit", qApp, SLOT(quit()));
QSystemTrayIcon * tray = new QSystemTrayIcon();
tray->setIcon(qApp->style()->standardIcon(QStyle::SP_ArrowUp));
tray->setContextMenu(menu);
tray->show();
return app.exec();
}
Windows XP/Vista Qt4.7.3/4.8.0 下无法重现 --------------------编程问答-------------------- 应该有两种可能,一种是QApplication没有把事件分发;另一种是你的app的消息循环本身无法结束
补充:移动开发 , Qt