Главное окно приложения и диалоговое взаимодействие в Qt - PullRequest
0 голосов
/ 08 августа 2011

Добрый день!

Возникла проблема: главное окно (например, MyApp) работает в фоновом режиме (позади всех других окон или в трее), не нужно показывать его без необходимости. Через некоторое время появляется диалоговое окно с напоминанием StayOnTop (с родителем = 0, которое не привязано к главному окну) и запрашивает некоторые взаимодействия с пользователем. После закрытия диалога я бы хотел, чтобы пользователь окна приложения в настоящее время работал с активным, а пользователь продолжал выполнять свою работу, не переключаясь на MyApp. Однако вместо описанного выше поведения появляется главное окно MyApp, и пользователь заставляет переключиться обратно на свое окно (задание) - неудобно.

Как предотвратить появление главного окна MyApp после закрытия диалога? Нужно установить какой-нибудь фильтр событий или получить доступ к OS API? Проблема существует в Mac, Windows, Linux.

Ответы [ 2 ]

0 голосов
/ 09 августа 2011

Вы можете попытаться повторно реализовать главное окно showEvent и проигнорировать это событие, если другие окна видны.

void main_window::showEvent( QShowEvent* e )
{
    if( /*one or more of its children are visible */ )
    {
        // nothing to do
    }
    else
    {
        QMainWindow::showEvent( e );
    }
}
0 голосов
/ 08 августа 2011

Может быть, просто попробовать вызвать метод hide после вызова диалога?Другая возможность - попробуйте установить это: http://doc.qt.io/qt-4.8/qwidget.html#windowFlags-prop на Qt::Popup.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...