2013-07-04 26 views
1

我正在使用Qt並創建一個具有多個子窗口的GUI。我正在使用MDI區域。我想隱藏mdi子窗口的頂部工具欄,但使用窗口標誌不起作用。窗口標誌沒有幫助在Qt中的mdiarea

我已經嘗試編寫代碼如下。首先,我嘗試了mdiarea,然後是子窗口,但都沒有工作。

mdiarea.setWindowsFlags(Qt :: FramelessWindowHint);

subwindow.setWindowsFlags(Qt :: FramelessWindowHint);

我也嘗試過使用Qt :: CustomizedWindowHint,但即使這也沒有幫助。請幫我解決一下這個。

謝謝。

+0

你所說的 '頂部工具欄' A [工具]的意思(http://en.wikipedia.org/wiki/Toolbar)是有bu的區域通過它(例如Microsoft Office程序中的Ribbon界面)。你的意思是[標題欄](http://en.wikipedia.org/wiki/Titlebar)? –

+0

是的標題欄...對不起混合了兩件事...謝謝你的回覆... – Sid411

回答

0

試試這個:

mdiArea->addSubWindow(new QLabel("Qt::FramelessWindowHint"), Qt::FramelessWindowHint); 

你不想設置MDI區域本身作爲一個無框窗,因爲它是你可能已經嵌入到另一個窗口小部件...它很可能已經沒有按」沒有框架。

你設置「子窗口」應該工作...但實際上addSubWindow(myWidget)包裹在真正子窗口傳入的窗口小部件,所以這是發生了什麼事情錯了。 Qt讓你通過窗口標誌作爲addSubWindow()的第二個參數,這些標誌轉到真正的子窗口。

請注意,對於無框窗口,您不能拖動窗口來移動窗口,或者抓住邊緣來調整窗口大小,因爲沒有任何東西可以抓住!

如果您只想將最小化和最大化按鈕消失(但仍然希望關閉按鈕),請嘗試傳遞Qt::Dialog

嘗試也與這些實驗:

addSubWindow(new QLabel("Qt::Tool"), Qt::Tool); 
addSubWindow(new QLabel("Qt::Tool|Qt::CustomizeWindowHint"), Qt::Tool|Qt::CustomizeWindowHint); 
addSubWindow(new QLabel("Qt::Dialog"), Qt::Dialog); 

我覺得Qt::Tool|Qt::CustomizeWindowHint可能是最好的選擇(沒有任何按鍵,但是仍然可移動和resizable - 如果你不希望它可調整大小,給它一個固定大小( setFixedSize()

編輯:也可以嘗試:Qt::CustomizeWindowHint|Qt::WindowTitleHint

+0

感謝您的答覆。但問題是我使用Qt Designer來創建mdi子窗口,因此我嘗試直接在代碼中編寫代碼。有沒有什麼辦法可以做到這一點,如果我已經在Designer中創建了MDIArea .... – Sid411

+0

在我的示例中(雖然從我發佈的內容中看不到),但我的MDIArea是在Designer中創建的,但是我的小部件已添加到代碼中。如果你的小部件(子窗口)也是在設計器中創建的,那麼試試這個:* mySubWindow-> parentWidget() - > setWindowFlags(...); *(記住你的小部件實際上被封裝在真正的MDI子窗口中,並希望利用這一點 - 但我沒有測試它)。 –

+0

嘿,我得到了解決方案。我使用的插槽子窗口激活,並在我給mdiArea.activatedSubwindow-> setWindowFlags(Qt :: FramelessWindowHint)....非常感謝您的幫助... :) – Sid411