我使用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);
}
答案 0 :(得分:2)
Qt::Desktop
标志不是您应该自己设置的。
您需要设置Qt::Window
标志:
setWindowFlags(m_infoAreaFloating ? Qt::Window : Qt::Widget);
show();
this->windowFlags() & ~Qt::Window
没有意义:在设置单独Qt::Window
标志时,您已清除所有其他窗口标记。你完全控制了旗帜,没有必要保留一些"其他" flags:没有。