Значок в системном трее, работающий в режиме отладки, но не в версии, в Qt - PullRequest
0 голосов
/ 07 марта 2011

У меня есть приложение Qt со значком в системном трее и меню, которое появляется при щелчке правой кнопкой мыши по значку.По некоторым причинам пункты меню работают нормально в режиме отладки, но не в режиме выпуска.

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");
}

Когда я щелкаю правой кнопкой мыши на значке, появляется меню, но нажатие на «Закрыть» ничего не делает - trayIconCloseAction_triggered() не вызывается вообще.Это делается только в режиме релиза.Кто-нибудь знает, в чем может быть причина?

Я использую Windows 7 и Qt Creator, сборка со статической сборкой Qt для MSV-2010.Значок не реагирует на события нажатия («активированные» сигналы).Снова в режиме отладки это работает, но не освобождает.

1 Ответ

1 голос
/ 07 марта 2011

В подобных ситуациях существует общая рекомендация:

  1. Удалить папки «release» и «debug» в каталоге сборки,
  2. Использовать «clean all» action from »меню "build" в Qt creator,
  3. Переключитесь в режим выпуска и затем используйте "Run qmake", "rebuild all" action,
  4. Нажмите Ctrl + R и проверьте необходимую функциональность.
...