У меня есть приложение с некоторыми окнами, и одно из них модальное. В ОС Windows, когда я минимизирую модальное окно, все остальные окна также минимизируются. В Linux (я использую Astra Linux) только модальное окно минимизируется, а все остальные состояния окон не меняются, и они недоступны для каких-либо действий, например, если они были отключены. Что не так со мной или Astra Linux? Как я могу сделать то же минимизировать действие в Astra Linux?
Вы можете переопределить changeEvent
метод модального виджета, чтобы поймать WindowStateChange
Событие, проверьте состояние виджета и, если оно свернуто, принудительно сверните все остальные виджеты верхнего уровня (если нет, восстановите все окна):
#include <QEvent>
#include <QApplication>
void Form::changeEvent(QEvent * event)
{
if(event->type() == QEvent::WindowStateChange)
{
QWidgetList list = QApplication::topLevelWidgets();
if(isMinimized())
{
for(int i=0; i<list.size(); i++)
{
if(!list.at(i)->isMinimized())
{
list[i]->setWindowState(Qt::WindowMinimized);
}
}
}
else
{
for(int i=0; i<list.size(); i++)
{
if(list.at(i)->isMinimized())
{
list[i]->activateWindow();
//or:
//list[i]->setWindowState(Qt::WindowActive);
}
}
}
}
}
Других решений пока нет …