По клику меню нужно манипулировать окнами:
- если окно не было создано, создать его, показать и передать ему фокус.
- если окно уже создано, но не активно - переместить его на передний план и передать ему фокус.
- если окно активно - закрыть его.
Делаю так:
void MainForm::showWindow()
{
QAction *a = qobject_cast<QAction *>(sender());
AbstractLogWindow *w = findWindow(a->objectName());
if(w)
{
if(a->data().toInt() != int(lastFocusForm))
{
w->show();
w->setFocus();
}
else
w->close();
}
else
{
w = createWindow(a);
if(w)
{
w->show();
w->setFocus();
}
}
}
У меня не правильно работает вот этот кусок -
if(a->data().toInt() != int(lastFocusForm))
{
w->show();
w->setFocus();
}
else
w->close();
у меня правильно определяется, что окно не активно, но метод show() - не срабатывает и фокус окну не передается. Я так понимаю что в Qt метод show() срабатывает только когда окно не открыто. Как тут правильно сделать?