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