1. 程式人生 > >零基礎學Qt 4程式設計之中心視窗部件的使用總結

零基礎學Qt 4程式設計之中心視窗部件的使用總結

Qt程式中的主視窗通常具有一箇中心視窗部件。從理論上來講,任何繼承自QWidget的類的派生類的例項,都可以作為中心視窗部件使用。

  • 幾種常見情形

QMainWindow的中心區域可以被任意種類的視窗部件所佔用。下面給出的是可能的情形。

⒈ 使用標準的Qt視窗部件(Standard Widget)

像QWidget、Qlabel以及QTextEdit等等這樣的標準視窗部件都可以用作中心視窗部件。

⒉ 使用自定義視窗部件(User-Define-Widget)

            有時候,某些有特殊要求的應用程式需要在自定義視窗部件中顯示資料,你可以把自定義的視窗部件作為中心視窗部件。例如,你的繪圖編輯器程式程式就可以使用類似名為PhotoEditor的自定義視窗部件作為自己的中心視窗部件。

3. 使用一個帶佈局管理器的普通Widget

            有時候,應用程式的中央區域會被許多視窗部件所佔用。這時就可以通過使用一個作為所有這些其他視窗部件父物件的QWidget,以及通過使用佈局管理器管理這些子視窗部件的大小和位置來完成這一特殊情況。

4. 使用切分視窗(QSplitter)

            其實,這種情況是上一種情況的一個例子。多個視窗部件一起使用的另一種方法是使用QSplitter。我們把QSplitter作為一個容器,在其中容納其它的視窗部件,這時的中心視窗部件就是一個QSplitter。QSplitter會在水平方向或者豎直方向上排列它的子視窗部件,使用者可以利用切分條(splitter handle)控制他們的尺寸大小。切分視窗可以包含所有型別的視窗部件,包括其他切分視窗。

5. 使用多文件介面工作空間(QMdiArea)

            如果應用程式使用的是多文件介面,那麼它的中心區域就會被QMdiArea視窗部件所佔據,並且每個多文件介面視窗都是它的一個子視窗介面。QMdiArea是在Qt4.3以後引入的一個支援多文件應用的類。

6. 使用工作空間部件(QWorkspace)

            這種情況通常用於多文件應用程式中,這時應用程式主視窗的中心部件是一個QWorkspace部件或者它的子類化部件。但這種方法在Qt4.5以後將被廢棄。後面我們還會講到它。

  • 建立和使用

            一個Qt主視窗應用程式必須有一箇中心視窗部件(Central Widget)。當你採用Qt Designer建立主視窗時,預設情況下,系統已經為你建立了一箇中心視窗部件,它是子類化QWidget的。

            結合程式碼可以方便的設定中心視窗部件,可以呼叫主視窗類的setCentralWidget()方法,它的原型如下:

void QMainWindow::setCentralWidget ( QWidget * widget )
它將把widget設定為主視窗的中心視窗部件。

建立中心視窗部件完整的程式碼示例如下:

QTextEdit * text;
text = new QTextEdit(this);
setCentralWidget(text);

            Qt應用程式的主視窗管理著中心視窗部件,它會在合適的時候銷燬這個中心視窗部件。每次程式呼叫setCentralWidget()方法時,先前存在的中心視窗部件將被新的所替換,而且主視窗會銷燬原來的部件,無需使用者處理。

            要想在程式中獲得並使用、設定中心視窗部件也很簡單,通過呼叫主視窗類的centralWidget()方法即可實現,它的函式原型如下:

QWidget * QMainWindow::centralWidget () const

它將返回主視窗的中心視窗部件,如果中心視窗部件不存在,它將返回0。一個完整的示例程式碼如下:

QTextEdit * text = centralWidget();
//設定屬性,但通常不需要
...

相關推薦

no