2014-07-23 91 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標誌,當你清除了所有其他窗口的標誌。你完全控制了旗幟,沒有必要保留一些「其他」旗幟:沒有。