У меня есть главное окно (QMainWindow) и виджет с флагом Qt :: WindowStaysOnTopHint, который предоставляет вспомогательную информацию и опции (назовем ее помощником). Если я работаю с основным окном, а затем нажимаю на любое другое приложение, это окно перестает быть активным (isActiveWindow() == false). Но если я сначала работаю с помощником, а затем переключаюсь на другое приложение/окно (не в главное окно), он остается активным. Как я могу обращаться с переключением из вспомогательного окна в другое приложение? Даже QApplication :: activeWindow() возвращает true из-за этого.Qt :: WindowStaysOnTopHint виджет всегда активен
.h файл:
//! Popup structure that contains listw_popup that shows tips
struct PopupWidget {
PopupWidget(QWidget*);
QWidget *base;
QListWidget *listw_popup;
};
class MainWindow : public QMainWindow
{
...
private :
PopupWidget popup_spec;
...
}
.cpp файл:
PopupWidget::PopupWidget(QWidget* parent)
{
base = new QWidget(parent, Qt::SplashScreen | Qt::WindowStaysOnTop);
listw_popup = new QListWidget(base);
}
MainWindow::MainWindow(QWidget *parent) : ... popup_spec(this) ...
{
...
}
Когда popup_spec.base.show() вызывается этот виджет появляется. И если я нажму на этот виджет (означает, что виджет станет активным), он останется активным, даже если я переключусь на другое приложение.
Какое поведение вы хотите достичь? – Jay
@Jay Мне нужно окно помощника исчезает, когда я переключаюсь с этого приложения на другое. – YAPPO
Я не могу воспроизвести вашу проблему. Я предполагаю, что вспомогательный виджет - это без родительского виджетов? можете ли вы показать минимальный код, показывающий ваше текущее поведение? – Viv