2014-07-23 62 views
1

我使用QMainWindow作为我的主QMainWindow。通过这个,我得到了另一个可用于可停靠小部件的区域(QDockWidget)。浮动子QMainWindow(QMainWindow作为主QMainWindow的子部件)

根据以下帖子,这是好的,它也适用于我。

  1. https://qt-project.org/forums/viewthread/17519
  2. http://www.qtcentre.org/threads/12569-QMainWindow-as-a-child-of-QMainWindow

为了使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); 
} 

相关:ab

回答

2

Qt::Desktop标志是不是你应该自己设置。

您需要设置Qt::Window标志:

setWindowFlags(m_infoAreaFloating ? Qt::Window : Qt::Widget); 
show(); 

有没有点this->windowFlags() & ~Qt::Window:设置唯一Qt::Window标志,当你清除了所有其他窗口的标志。你完全控制了旗帜,没有必要保留一些“其他”旗帜:没有。