laurent
laurent

Reputation: 90776

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

Upvotes: 0

Views: 2436

Answers (1)

Johnny
Johnny

Reputation: 1974

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.

Upvotes: 1

Related Questions