2010-07-21 85 views

回答

81

A QWidget是Qt中所有可繪製類的基類。任何基於QWidget的類都可以通過在沒有父項時顯示它來顯示窗口。

A QDialog基於QWidget,但設計爲顯示爲窗口。它將始終顯示在一個窗口中,並具有使其能夠與對話框上的常用按鈕(接受,拒絕等)良好協作的功能。

QMainWindow是圍繞主窗口的共同需求而設計的。它具有菜單欄,狀態欄,工具欄和其他小部件的預定義位置。它沒有像QDialog那樣的按鈕的任何內置配額。

+0

我搜索了這個問題,但那不是我正在等待的答案。在QtDesigner中使用QMainWindow給你一個菜單欄和一個狀態欄。當你自己編寫代碼並使用QMainWindow時,你沒有這些東西。或者你說你可以做一些像window.addToolBar(「Toolbar」);它會把它放在一個預定義的地方而沒有任何其他的頭痛? – 2012-10-24 21:56:08

+0

@MoraruLilian:我實際上並沒有使用QMainWindow,所以我不知道詳情。正如我在我的回答中所說的,我知道它有適合他們的地方,所以在代碼中做它可能就像你說的那樣簡單。 – 2012-10-25 17:31:22

+5

@Caleb_Huitt它的確如我所說。我想清楚,如果這就是你想說的話。無論如何,我會建議總是使用QWidget而不是QMainWindow。您可能會遇到問題,例如設置另一個佈局。如果你想在QMainWindow中設置一個新的佈局,你將不得不創建一個QWidget並將它設置爲QMainWin的一箇中心部件,然後在QWidget中你可以setLayout(QLayout *)。儘管使用QWidget可以避免額外的麻煩。當然,QMainWindow提供了ToolBar和StatusBar的簡單設置,但你可以在QWidget中自己完成... – 2012-11-05 01:00:46