Минимизируйте все окна приложения, когда модальное окно сворачивается (в Linux)

У меня есть приложение с некоторыми окнами, и одно из них модальное. В ОС Windows, когда я минимизирую модальное окно, все остальные окна также минимизируются. В Linux (я использую Astra Linux) только модальное окно минимизируется, а все остальные состояния окон не меняются, и они недоступны для каких-либо действий, например, если они были отключены. Что не так со мной или Astra Linux? Как я могу сделать то же минимизировать действие в Astra Linux?

2

Решение

Вы можете переопределить 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);
}
}
}
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]