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();
//設定屬性,但通常不需要
...

相關推薦

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

Qt程式中的主視窗通常具有一箇中心視窗部件。從理論上來講,任何繼承自QWidget的類的派生類的例項,都可以作為中心視窗部件使用。 幾種常見情形 QMainWindow的中心區域可以被任意種類的視窗部件所佔用。下面給出的是可能的情形。 ⒈ 使用標準的Qt視窗部件(

基礎Qt 4程式設計例項Qt 樣式表的應用

下面我們以一個例項來講解樣式表的應用。這個例子取材於Qt Demo,比較複雜,有一定難度,基本上覆蓋了前面幾章講述的各種技能點,主要包括: ◆ 如何自定義Qt 的樣式表 ◆ 如何在應用程式中應用樣式表 ◆ 如何不使用樣式表來設定應用程式的樣式 ◆ 如何使用單繼承法從.ui檔案

基礎Qt 4程式設計》準備再版,近期重印。請大家提寶貴意見,謝謝。

如題。接到出版社編輯通知,《零基礎學Qt 4程式設計》第一版即將售罄,準備再版。 近期先準備重印。我已經收集了我自己發現的,以及朋友們提到的書中的錯誤,準備在重印前改正。 如果大家有對這本書的意見和建議,比如章節的安排,內容的選擇,等等都可以想我提出,通過本站簡訊或我的

基礎python-4.2 其它內建類型

介紹 src one 一個 tex == water 文件 div 這一章節我們來聊聊其它內建類型 1.類型type 在python2.2的時候,type是通過字符串實現的,再後來才把類型和類統一 我們再次使用上一章節的圖片來說明一些問題 我們通

基礎UI設計教程圖示的設計形式講解

這次的總結主要內容是從圖示這一方面作為切入點來進行一些分析。整體內容剛好契合了最近的學習重點,自己也越來越肯定設計師在發展的中後期設計思路比技術手法的重要性。自己的這次總結希望能傳遞一個思路,或者是能夠讓大家有一點點更好的思考方式。 這次對比主要選擇了QQ、淘寶、微博三款最常用APP為主線分析,輔助以快手、

基礎c語言循環

零基礎 png http 一點 堅持 alt 另一個 col 無奈 記錄每一天的學習,從零到一。堅持與你我同在。   看了很多的書,仍然不會編程,從進入一個坑在到另一個坑中。其實很無奈,但也沒辦法。 也許,你需要一點好的思考過程。時間只會讓我們記住那些難忘的事。那些過眼雲煙

基礎c語言比較數

inf 比較大小 bubuko 輸出最大值 根據 過多 圖片 turn 簡單的 我們通常會遇到比較幾個數的大小的問題。具體來說是比較大小後將兩個數交換,但是有人通過if(a>b)[printf("%d",a)} else {printf("%d",b)}的方式避開

基礎Java程式設計開發要會這些知識才能去應聘工作!

Java行業在網際網路發展迅速的今天是一日比一日發展的好,Java語言已經成為世界上應用較廣泛的程式語言,學Java已經成為程式語言中的潮流,越來越多的人有意向到Java行業中發展。那零基礎如何學習Java開發?要會什麼? Java其實就是計算機程式語言,初級程式設計師具備一點點的資料結構知識以

中國大學MOOC 基礎Java語言 ——多項式加法(5分) 4分答案(想哭)

import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int x =

10歲小孩通過程式設計成為CEO,基礎IT真的不難

一名6歲開始學習程式設計的小朋友,10歲就成為了一名被全矽谷追捧的女程式設計師,同時她還兼任了一家遊戲公司的CEO。扎克伯格贊她未來可期,奧巴馬伕人還親自寫信鼓勵她,這名美國小女孩叫沙邁拉·梅塔。   她6歲的時候對程式語言產生了興趣,於是每天纏著工程師爸爸教她學計算機知識,7歲的時候,她已

基礎Java10系列三:Java高階程式設計​​​​​​​

多執行緒:  生產者和消費者指的是兩個不同的執行緒類物件,兩個程序公用一個公共的固定大小緩衝區。其中之一的生產者,用於將訊息傳入緩衝區,另外一個是消費者,用於從緩衝區取    出資料。當緩衝區滿了,而此時生產者還想向其中放入新的資料,其解決方法是讓生產者此時進行休眠,等待消費

基礎Java10系列一:程式設計入門

本課程主要講解JavaSE的發展歷史,JDK開發環境的搭建,CLASSPATH屬性作用,Java程式基本結構、基本資料型別的劃分及使用、程式結構、方法的定義與使用。本課程是作為Java系列課程的初期課程,掌握本課程之後可以繼續學習Java面向物件程式設計及高階開發部分。

中國大學MOOC 基礎Java語言 ——多項式加法(5分) 4分答案(想哭)

import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in);

基礎程式設計難嗎?哪種程式語言最好?

作為使用最廣泛的程式語言、以及市場上java人才的需求越來越大,很多人都準備報java培訓班轉行IT,可是對於很多新手來說,剛開始接觸Java會很迷惘,只知道跟風報班學習,卻不知道Java可以做什麼。 其實Java 可以做的東西太多了,手機遊戲、中介軟體、軟體、

基礎程式設計找好大腿很重要!

相信各位同學在學習java的時候會遇到很多問題,其實不管是參加培訓,還是自學,有一個好老師(前輩)很重要,一定要找一個好的,有經驗的老師(我們稱之為大腿)。至於怎麼去找這樣的人,大家就只能靠自己啦。IT君今天講的一些東西也都是是建立在有人帶你(指導)的基礎上。

基礎開始QT繪圖(4

我們前面使用QPainter進行繪圖一定意義上來說也算是基本滿足要求了,但如果我們需要使圖形和使用者具備互動性,QPainter就無能為力了,或者實現起來就會非常的麻煩,但QT為了使我們免於麻煩,提供了一個特殊的物件,或者叫做圖形框架QGraphicView。 接下來,我們就來看看這

基礎Java語言(第三週程式設計題)

1奇偶個數(5分) 題目內容: 你的程式要讀入一系列正整數資料,輸入-1表示輸入結束,-1本身不是輸入的資料。程式輸出讀到的資料中的奇數和偶數的個數。 輸入格式: 一系列正整數,整數的範圍是(0,100000)。如果輸入-1則表示輸入結束。 輸出格式: 兩個整數,第一個整數表

基礎Java語言(第二週程式設計題)

1時間換算(5分) 題目內容: UTC是世界協調時,BJT是北京時間,UTC時間相當於BJT減去8。現在,你的程式要讀入一個整數,表示BJT的時和分。整數的個位和十位表示分,百位和千位表示小時。如果小時小於10,則沒有千位部分;如果小時是0,則沒有百位部分;如果分小於10分,需要保留十位上的

分解質因數——MOOC《基礎Java語言》第7周程式設計題1

題目內容:每個非素數(合數)都可以寫成幾個素數(也可稱為質數)相乘的形式,這幾個素數就都叫做這個合數的質因數。比如,6可以被分解為2x3,而24可以被分解為2x2x2x3。現在,你的程式要讀入一個[2,100000]範圍內的整數,然後輸出它的質因數分解式;當讀到的就是素數時,輸出它本身。輸入格式:一個整數,範

基礎FPGA(十二)一步一腳印基於FIFO的串列埠傳送機設計全流程及常見錯誤詳解

     今天要寫的是一段基於FIFO的串列埠傳送機設計,之前也寫過串列埠傳送的電路,這次寫的與上次的有幾分類似。這段程式碼也是我看過別人寫過的之後,消化一下再根據自己的理解寫出來的,下面是我寫這段程式碼的全部流程和思路,希望對剛開始接觸的朋友來說有一點點的幫助,也希望有