System tray icon working in debug but not release mode, in Qt

别说谁变了你拦得住时间么 提交于 2019-12-11 23:48:24

问题


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 = 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.


回答1:


In situations like this there is a general recommendation:

  1. Erase "release" and "debug" folders in your build directory,
  2. Use "clean all" action from "build" menu in Qt creator,
  3. Switch to release mode and then use "Run qmake", "rebuild all" actions,
  4. Press Ctrl+R and check needed functionality.


来源:https://stackoverflow.com/questions/5215492/system-tray-icon-working-in-debug-but-not-release-mode-in-qt

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!