Значок на панели задач, работающий в режиме отладки, но не в версии, в Qt

У меня есть приложение 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. Сотрите папки "release" и "debug" в вашей директории сборки,
  2. Используйте действие "очистить все" из меню "Сборка" в Qt creator,
  3. Переключитесь в режим релиза и затем используйте "Run qmake", "rebuild all" действия,
  4. Нажмите Ctrl+R и проверьте необходимую функциональность.
Другие вопросы по тегам