System tray icon working in debug but not release mode, in Qt
I have a Qt application with a system tray icon and a menu that shows up when right-clicking the icon. For some reason, the menu items work fine in debug mode but not in release mode.
QAction* closeAction = new QAction("Close", this);
QMenu* trayIconMenu = new QMenu(this);
trayIconMenu->addAction(closeAction);
QSystemTrayIcon* trayIcon = 开发者_Python百科new QSystemTrayIcon(this);
trayIcon->setContextMenu(trayIconMenu);
QIcon trayIconIcon("Application.png");
trayIcon->setIcon(trayIconIcon);
trayIcon->show();
QObject::connect(closeAction, SIGNAL(triggered()), this, SLOT(trayIconCloseAction_triggered()));
void MainWindow::trayIconCloseAction_triggered() {
MessageBoxes::info("Close item clicked");
}
When I right-click on the icon, the menu shows up but clicking on "Close" does nothing - trayIconCloseAction_triggered()
is not called at all. It does this only in release mode. Does anybody know what could be the reason?
I am using Windows 7 and Qt Creator, building with an MSV-2010 static build of Qt.
Edit: The icon does not react to click events ("activated" signals) either. Again in debug mode it works, but not release.
In situations like this there is a general recommendation:
- Erase "release" and "debug" folders in your build directory,
- Use "clean all" action from "build" menu in Qt creator,
- Switch to release mode and then use "Run qmake", "rebuild all" actions,
- Press Ctrl+R and check needed functionality.
精彩评论