#c #qt #pyqt4
#c #qt #pyqt4
Вопрос:
Довольно часто я обнаруживаю, что мне нужно показать и вывести окно на передний план. Например, когда пользователь пытается перезагрузить тот же документ, я просто вызываю старый. Для этого у меня есть такой код:
widget->raise();
widget->activateWindow();
widget->showNormal();
Начинает казаться, что мне не хватает функции быстрого доступа. Конечно, такое поведение довольно распространено. Есть ли какая-то предпочтительная функция, которая будет выполнять все вышеперечисленное и / или просто делать правильные вещи в каждой целевой ОС?
Примечание: я только что заметил дефект, поэтому специальная функция сейчас еще важнее. Если окно свернуто, activateWindow
не работает. Это происходит, даже если вы измените порядок выше на showNormal
первый.
Комментарии:
1. Да, я много просматривал документы. Каждая ОС делает что-то немного другое, поэтому мне нужно несколько вызовов. В данном случае мое приложение является текущим окном верхнего уровня, поэтому оно обычно работает.
2. Звучит как ошибка, она отлично работает для меня в PySide. Сложно оценить без SSCCE, который воспроизводит проблему.
3. Действительно, это похоже на ошибку,
activateWindow()
которая работает и для меня. Можете ли вы протестировать это с более новой версией Qt (скажем, 5.6 или 5.7)?
Ответ №1:
это рабочий «ярлык» :
widget->setWindowState(Qt::WindowActive) ;
Вы можете связать его с последним Qt::WindowState
окном.
Однако это обозначение не очень явное.
Комментарии:
1. К сожалению, raise() , showNormal() — они оба не сработали для меня. Но setWindowState(Qt::WindowActive) отлично работает в моем случае. Спасибо…
2. Странно … это не работает для меня, но
activateWindow()
работает. Может быть, это было исправлено в Qt 5.7?
Ответ №2:
Нет необходимости в таком усложнении. Этого достаточно :
widget->raise();
widget->show();
Кстати, вы можете вызвать show()
один раз, и если вы hide()
этого не сделаете, нет необходимости вызывать show()
снова.
Комментарии:
1. Это не восстанавливает окно, которое было свернуто.
2. Он также не фокусируется на окне. Эти оба
activateWindow
иshowNormal
по-прежнему требуются.3. @edA-qamort-ora-y Вы не упомянули в своем вопросе, что окно может быть свернуто
4. Я мог бы утверждать, что вызов
showNormal
является четким указанием на то, что окно может быть свернуто.