1. 程式人生 > >QT:控制元件精講(四)容器Containers Widgets

QT:控制元件精講(四)容器Containers Widgets

    Qt Creator有9種Containers Widgets,如圖:


    Containers Widgets的Qt類和名稱介紹如下表:

    控制元件類     控制元件名     中文名
    QGroupBox     GroupBox     組合框
    QScrollArea     ScrollArea     滾動區
    QToolBox     ToolBox     工具箱
    QTabWidget     TabWidget     切換卡
    QWidgetStack     WidgetStack     控制元件棧
    QFrame     Frame     框架
    QWidget     Widget     元件
    QMdiArea     MdiArea     MDI視窗顯示區
    QDockWidget     DockWidget     停靠視窗

    一、GroupBox控制元件

    1.控制元件位置:Containers->GroupBox

    2.控制元件介紹:GroupBox好處就是使用者可以比較清晰地瞭解程式的介面,我們可以把功能相關的控制元件放到一個GroupBox中。

    3.控制元件屬性設定選項:

        (1)name:該控制元件對應原始碼中的名稱

        (2)title:該控制元件對應圖形介面中所顯示的名稱

        (3)font:設定title的字型

    二、ScrollArea控制元件

    1.控制元件位置:Containers->ScrollArea

    2.控制元件介紹:用來顯示子控制元件的內容的框架,如果子控制元件的尺寸超過了框架的大小,可以使用滾動條,方便檢視整個子控制元件

    3.控制元件屬性設定選項:

        (1)neme:同上

        (2)font:設定文字框的字型

    4.常用成員函式

        (1)QScrollArea::QScrollArea(QWidget *parent = 0)

        構造一個父物件為parent的ScrollArea

        (2)void QScrollArea::setWidget(QWidget *widget)

        設定控制元件widget為該ScrollArea的子控制元件

        (3)QWidget *SCrollArea::takeWidget()

        刪除該ScrollArea的子控制元件

        (4)QWidget *QScrollArea::widget()const

        返回該ScrollArea的子控制元件

    三、ToolBox控制元件

    1.控制元件位置:Containers->ToolBox

    2.控制元件介紹:ToolBox提供了一系列的頁和隔間,就像Qt Creator中的工具箱一樣。

    3.控制元件屬性設定選項

        (1)name:同上

        (2)font:同上

        (3)currentIndex:當前活動頁的索引

        (4)itemLabel:當前活動頁的標籤

        (5)itemName:當前活動頁的名稱

        (6)itemBackgroundModel:當前活動頁的背景模式

    4.常用成員函式

        (1)QToolBox::QToolBox(QWidget *parent = 0,const char *name = 0,QFlags f = 0)

        構造一個名稱為name,父物件為parent和標誌位f的ToolBox

        (2)int QToolBox(QWidget *item,const QIconSet &iconSet,const QString &label)

        增加一個item到ToolBox的底部,新增加的item的標籤的文字是label,標籤的圖示是iconSet

        (3)int QToolBox(QWidget *item,const QString &label)

        增加一個item到ToolBox底部,新增加的item的標籤文字是label

        (4)int ToolBox::count()const

        返回該工具箱中item數目

        (5)int ToolBox::currentIndex()const

        返回當前活動item的索引

        (6)QWidget *QToolBox::currentItem()const

        返回當前活動item,如果該ToolBox為空,返回0

        (7)int ToolBox::indexof(QWidget *item)const

        返回item的索引

        (8)int QToolBox::insertItem(int index,QWidget *item,const QIconSet &iconSet,const QString &label)

        在索引index處插入一個新的專案,專案是item,標籤圖示是iconSet,標籤文字時label,返回插入item的索引

        (9)int QToolBox::insertItem(int index,QWidget *item,const QString &label)

        在索引index處插入一個新的專案,專案的名稱是item,標籤文字是label,返回插入item的索引。

        (10)QWidget *QToolBox::item(int index)const

        返回索引為index位置的item

        (11)QString QToolBox::itemLabel(int index)const

        返回索引為index位置的標籤

        (12)int QToolBox::RemoveItem(QWidget *item)

        刪除ToolBox中的item的專案,刪除成功後返回item的索引,否則返回-1

        (13)void QToolBox::setCurrentIndex(int index)

        設定索引為index位置的專案為當前活動專案

        (14)void QToolBox::setCurrentIndex(QWidget *item)

        設定索引item為當前活動的專案

        (15)void QToolBox::setItemLabel(int index,const QString &label)

        設定label為索引index位置的專案的標籤文字

    四、TabWidget控制元件

    1.控制元件位置:Containers->TabWidget

    2.控制元件介紹:切換卡控制元件頂部或底部有一個標籤選項欄,每個標籤選項都有一個頁面,選擇哪個頁面,只需單擊對應的標籤即可,或按指定ALT+字母快捷鍵組合即可。

    3.控制元件屬性設定選項

        (1)name:同上

        (2)currentPage:當前活動的頁面

        (3)margin:頁面邊框的空白寬度,預設是0

        (4)tabShap:標籤選項的模式

        (5)pageName:當前活動頁的名稱

        (6)pageTitle:當前活動也得標籤文字

    4.常用成員函式

        (1)QTabWidget::QTabWidget(QWidget *parent = 0,const char *name = 0,WFlags f = 0)

        構造一個名稱為name、父物件為parent和標記為f的TabWidget

        (2)void QTabWidget::addTab(QWidget *child,const QString &label)[virtual]

        增加子頁到該TabWidget,子頁控制元件是child,子頁標籤文字是label

        (3)void QTabWidget::addTab(QWidget *child,const QIconSet &iconset,const QString &label)[virtual]

        這是一個過載成員函式,功能同函式2,只是增加了一個iconset,iconset是圖示集

        (4)QString QTabWidget::tabLabel(QWidget *w)const

        返回索引index處子頁的選項標籤文字

        (5)void QTabWidget::changeTab(QWidget *w,const QString &label)

        更改子頁w的標籤文字為label

        (6)void QTabWidget::changeTab(QWidget *w,const QIconSet &iconset,const QString &label)

        更改子頁w的圖示為iconset,和更改標籤文字為label

        (7)int QTabWidget::count()const

        返回該TabWidget中子頁的數目

        (8)QWidget *QTabWidget::currentPage()const

        返回當前活動子頁

        (9)int QTabWidget::currentPageIndex()const

        返回當前活動子頁的索引

        (10)int QTabWidget::indexOf(QWidget *w)const

        返回子頁w的索引

        (11)void QTabWidget::insertTab(QWidget *child,const QString &label,int index = -1)[virtual]

        在索引index處插入新的子頁,子頁控制元件是child,子頁標籤文字是label。注意:在插入新的子頁時要確保插入的子頁名與標籤文字與TabWidget中的所有子頁不同,如果指定index就是在指定的位置插入,否則就和簡單地新增一樣。

        (12)void QTabWidget::insetTab(QWidget *child,const QIconSet &iconset,const QString &label,int index = -1)[virtual]

        在索引index處插入新的子頁,子頁控制元件是child,子頁標籤文字是label,子頁圖示為iconset

        (13)QString QTabWidget::label(int index)const

        返回索引index處子頁的選項標籤

        (14)QWidget *QTabWidget::page(int index)const

        返回索引index處子頁

        (15)void QTabWidget::removePage(QWidget *w)[virtual slot]

        刪除子頁w

        (16)void QTabWidget::setCurrentPage(int index)[slot]

        設定索引index處子頁為當前活動頁

        (17)void QTabWidget::setTabLabel(QWidget *w,const QString &label)

        設定子頁w的標籤文字為label

    五、StackedWidget控制元件

        1.控制元件位置:Containers->StackedWidget

        2.控制元件介紹:Qt提供了這樣一個控制元件棧,可以使開發人員使用棧管理控制元件,像用棧管理其他資料型別一樣簡單。控制元件棧只顯示棧頂的控制元件,開發人員可以使用raiseWidget()函式把棧中任何其他控制元件移到棧頂,從而實現控制元件之間的切換。

        3.控制元件屬性設定選項:

            (1)name:同上

            (2)currentPage:當前活動的頁面

            (3)pageName:當前活動頁的名稱

            (4)font:設定該控制元件內部文字的字型

        4.常用成員函式:

            (1)QWidgetStack::QWidgetStack(QWidget *parent = 0,const char * name = 0)

            構造一個名稱為name,父物件為parent的WidgetStack

            (2)int QWidgetStack::addWidget(QWidget *w,int id = -1)

            把控制元件w新增到該控制元件棧中,標識為id

            (3)int QWidgetStack::id(QWidget *w)const

            返回控制元件w的標識

            (4)void QWidgetStack::raiseWidget(int id)[slot]

            把標識為id的控制元件升到該控制元件棧的棧頂

            (5)void QWidgetStack::raiseWidget(QWidget *w)[slot]

            把控制元件w升到該控制元件的棧頂

            (6)void QWidgetStack::removeWidget(QWidget *w)

            把控制元件w從該控制元件棧中刪除

            (7)QWidget *QWidgetStack::widget(int id)const

            返回標識為id的控制元件

        六、Frame控制元件

        1.控制元件位置:Containers->Frame

        2.控制元件介紹:框架控制元件用來存放其他控制元件,也可用於裝飾,它一般用來作為更加複雜容器的基礎。也可以用在form中作為佔用控制元件。

        3.控制元件屬性設定選項:

            (1)name:同上

            (2)framesShape:框架外形格式

            (3)framesShadow:框架陰影格式

            (4)frameWidth:框架的寬度(只讀)

            (5)LineWidth:線寬

        4.常用成員函式

            (1)QFrame::QFrame(QWidget *parent = 0,const char *name = 0,WFlags f = 0)

            構造一個框架風格為NoFrame並且1畫素框架寬度的框架視窗部件,如:QFrame *f = new();

        七、Widget控制元件

        1.控制元件位置:Containers->Widget

        2.控制元件介紹:Widget元件在建立時是不可見的,他可以包含子控制元件,在刪除該Widget時,子控制元件也一起刪除。

        3.控制元件屬性設定選項:

            (1)name:同上

            (2)font:設定錶盤上的字型

            (3)cursor:設定滑鼠游標樣式

        4.常用成員函式:

            (1)QWidget::QWidget(QWidget *parent = 0,const char *name = 0,WFlags f = 0)

            構造一個名稱為name,父物件為parent的Widget

            (2)QWidget *QWidget::childAt(int x,int y,bool includeThis = FALSE)const

            返回該Widget座標系統中畫素位置(x,y)處的可視的子視窗部件

            (3)QWidget *QWidget::childAt(const QPoint &p,bool includeThis = FALSE)const

            返回該Widget座標系統位置p處的可視的子視窗部件

            (4)void QWidget::drawText(int x,int y,const QString &str)

            在該Widget座標系統中畫素位置(x,y)處繪製字串str

            (5)void QWidget::drawText(const QPoint &p,const QString &str)

            在該Widget座標系統中位置p處繪製字串str

        八、MdiArea控制元件
        1.控制元件位置:Containers->MdiArea
        2.控制元件介紹:MdiArea控制元件中文稱作“MDI視窗顯示區”,MDI是Multiple Document Interface的簡稱,中文意思是多文件介面,主要適用於完成一項工作時需要用到多個檔案。QMainWindow是SDI(Signal Document Interface,單文件介面)每個開啟的檔案佔據一個視窗,主要適用於所有工作沒有太多檔案參與的情況。
        3.控制元件屬性設定選項;

            (1)name:同上
            (2)font:同上
            (3)viewMode:設定檢視模式Qt提供TabbedView和SubWindowView兩種選擇
            (4)documentMode:儲存的標籤欄在選項卡檢視模式是否設定為檔案的模式,預設為false。
            (5)tabShape:(當viewMode是TabbedView時)設定該MdiArea的標籤形式Qt提供兩種選擇:Rounded和Triangular。
            (6)tabPosition:(當viewMode是TabbedView時)設定標籤所在方向
            (7)activeSubWindowName:子視窗的名稱
            (8)activeSubWindowTitle:子視窗的標籤

        4.常用成員函式

            (1)QMdiArea::QMdiArea(QWidget *parent = 0)

            構造一個父物件為parent的MdiArea

            (2)void QMdiArea::activateNextSubWindow()[slot]

            啟用下一個視窗

            (3)void QMdiArea::activatePreviousSubWindow()[slot]

            啟用上一個視窗

            (4)QMdiSubWindow *QMdiArea::activateSubWindow()const

            返回當前活動子視窗,如果當前沒有活動子視窗,返回0

            (5)QMdiSubWindow *QMdiArea::addSubWindow(QWidget *widget,Qt::WindowFlags windowFlags = 0)

            新增一個新的子視窗部件

            (6)void QMdiArea::closeActiveSubWindow()[slot]

            關閉當前活動子視窗

            (7)void QMdiArea::closeAllSubWindow()[slot]

            關閉所有子視窗

            (8)QMdiSubWindow *QMdiArea::currentSubWindow()const

            函式功能同activeSubWindow(0

            (9)void QMdiArea::removeSubWindow(QWidget *widget)

            刪除widget,widget必須是該MdiArea的子部件

            (10)void QMdiArea::setActiveSubWindow(QMdiSubWindow *window)[slot]

            設定子視窗window為當前活動子視窗

        九、DockWidget控制元件

        1.控制元件位置:Containers->DockWidget

        2.控制元件介紹:停靠窗體,可以作為一個頂層視窗漂浮在桌面,主要作為輔助窗體出現在介面中,可以在很多IDE中看到停靠窗體

        3.控制元件屬性設定選項

            (1)name:同上

            (2)font:同上

            (3)floating:設定該DockWidget是否為可漂浮

            (4)feature:儲存的停靠窗體一些功能,是否為可移動,可關閉或浮動等,預設是可移動可關閉和浮動

            (5)allowedArea:該DockWidget可以停靠的地方

            (6)windowTitle:該停靠窗體的標題

            (7)dockWidgetArea:設定該DockWidget的停靠地方

            (8)docked:設定該DockWidget是否是停靠著的

        4.常用成員函式

            (1)QDockWidget::QDockWidget(const QString &title,QWidget *parent = 0,Qt::WindowFlags flags = 0)

            構造一個標題為title,父物件為parent的DockWidget

            (2)QDockWidget::QDockWidget(QWidget *parent = 0,Qt::WindowFlags flags = 0)

            構造一個父物件為parent和標誌位flags的DockWidget

            (3)void QDockWidget::setTitleBarWidget(QWidget *widget)

            設定widget為該DockWidget的標題欄,如果widget為0,將用預設標題欄代替

            (4)QWidget *QDockWidget::titleBarWidget()const

            返回該DockWidget定義的標題欄,如果沒有定義標題欄,返回0

            (5)void QDockWidget::setWidget(QWidget *widget)

            設定widget為該DockWidget的部件,在呼叫這個函式之前,必須添加布局,否則widget就是不可見的

            (6)QWidget *DockWidget::widget()const

            返回該DockWidget的部件,如果沒有設定部件,則返回0