我使用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);
}发布于 2014-07-23 18:05:22
Qt::Desktop标志不是由您自己设置的。
您需要设置Qt::Window标志:
setWindowFlags(m_infoAreaFloating ? Qt::Window : Qt::Widget);
show();this->windowFlags() & ~Qt::Window没有意义:在设置单独的Qt::Window标志时,您已经清除了所有其他窗口标志。您完全控制了旗子,没有必要保存一些“其他”标志:没有。
https://stackoverflow.com/questions/24917115
复制相似问题