Как работать с WhatsThisMode с несколькими диалогами в QT
В моем приложении Qt есть несколько диалоговых классов. Когда я нажимаю кнопку справки в заголовке диалогового окна, запускается и выполняется метод события "все диалоги". Я проверяю сQEvent::EnterWhatsThisMode
независимо от того, нажата кнопка справки или нет.
Когда я тестировал метод события с помощью QEvent:WindowActivate
, только метод события активного диалога выполняется должным образом. Например, когда я открываю диалоговое окно состояния, просто выводится сообщение "Состояние активировано окном", но когда я нажимаю кнопку справки в строке заголовка диалогового окна состояния, открывается ссылка диалогового окна состояния и ссылка диалогового окна сборки детали.
Также я попытался проверить, нажата ли кнопка справки с помощью QEvent:WhatsThisClicked
а также QEvent::WhatsThis
но не сработало.
Метод события диалогового окна PartAssemblyScreen:
bool PartAssemblyScreen::event(QEvent *e)
{
if (e->type() == QEvent::EnterWhatsThisMode)
{
ShellExecute(NULL, "open", "chrome.exe", "./SimCommon/help/build/html/positioning_parts.html", NULL, SW_SHOWNORMAL);
e->accept();
QWhatsThis::leaveWhatsThisMode();
return true;
}
else if (e->type() == QEvent::WindowActivate)
{
qDebug("part assembly Window activated ") ;
}
return false;
}
Метод события StatusDialog:
bool StatusDialog::event(QEvent *e)
{
if (e->type() == QEvent::EnterWhatsThisMode)
{
ShellExecute(NULL, "open", "chrome.exe", "./SimCommon/help/build/html/analyze.html", NULL, SW_SHOWNORMAL);
e->accept();
QWhatsThis::leaveWhatsThisMode();
return true;
}
else if (e->type() == QEvent::WindowActivate)
{
qDebug("Window activated status");
}
return false;
}