Я использую QMainWindow
как ребенок моей главной QMainWindow
, Таким образом я получаю другую область, которую я могу использовать для закрепляемых виджетов (QDockWidget
).
По следующим постам это нормально, у меня тоже отлично работает.
Чтобы сделать QMainWindow
ведя себя как обычный виджет, я снял флажок окна, этот прием упоминается в одном из постов выше.
Теперь я тоже хочу иметь возможность отпустить этого ребенка QMainWindow
со всеми прикрепленными виджетами. Другими словами, я хочу отменить шаг «сделать его обычным виджетом». К сожалению, это не работает. Он исчез из главного окна, но не виден вообще.
Любой способ решить это?
// this is the child QMainWindow
if (this->m_infoAreaFloating)
{
// this should give me a floating window besides the main window
this->setWindowFlags(Qt::Desktop);
this->show();
}
else
{
// make this compliant as QWidget
this->setWindowFlags(this->windowFlags() & ~Qt::Window);
}
Связанные с: , б
Qt::Desktop
флаг не то, что вы должны установить самостоятельно.
Вам нужно установить Qt::Window
флаг:
setWindowFlags(m_infoAreaFloating ? Qt::Window : Qt::Widget);
show();
Там нет смысла this->windowFlags() & ~Qt::Window
: вы очистили все остальные флаги окна при установке одинокого Qt::Window
флаг. Вы полностью контролируете флаги, нет необходимости сохранять некоторые «другие» флаги: их нет.