Qt правильный способ отображения/отображения/повышения окна

Довольно часто я нахожу, что мне нужно показать и принести окно на фронт. Например, когда пользователь пытается перезагрузить один и тот же документ, я просто выношу старый. Для этого у меня есть такой код:

widget->raise();
widget->activateWindow();
widget->showNormal();

Это начинает чувствовать, что у меня отсутствует функция быстрого доступа. Конечно, этот тип поведения довольно распространен. Есть ли какая-то предпочтительная функция, которая будет делать все вышеизложенное и/или просто делать правильную вещь на каждой целевой ОС?


Примечание. Я только что заметил дефект, поэтому особая функция еще важнее. Если окно сведено к минимуму, activateWindow не работает. Это происходит, даже если вы сначала измените порядок выше на showNormal.

Ответы

Ответ 1

это рабочий "ярлык":

widget->setWindowState(Qt::WindowActive) ;

Вы можете связать его с последним Qt::WindowState окна. Однако эта нотация не очень ясна.

Ответ 2

Нет необходимости в таком осложнении. Этого достаточно:

widget->raise();
widget->show();

Кстати, вы можете вызвать show() один раз, и если вы не hide() его, нет необходимости снова звонить show().