QT開發(六)——QT容器組件

QT開發(六)——QT容器組件

    QT中有九種容器組件,分別是組合框QGroupBox、滾動區QScrollArea、工具箱QToolBox、選項卡QTabWidget、控件棧QWidgetStack、框架QFrame、組件QWidgetMDI窗口顯示區QMdiArea、停靠窗口QDockWidgetapp

1、QGroupBox分組框

1QGroupBox組件簡介

    QGroupBox爲構建分組框提供了支持。分組框一般帶有一個邊框和一個標題欄,做爲容器部件來使用,在其中能夠佈置各類窗口部件。分組框的標題一般在上方顯示,其位置能夠設置爲靠左、居中、靠右、自動調整這幾種方式之一。位於分組框之中的窗口部件能夠得到應用程序的焦點,位於分組框以內的窗口部件是分組框的子窗口,一般使用addWidget()方法把子窗口部件加入到分組框之中。框架

2QGroupBox組件屬性

    QGroupBox組件屬性設置選項:ide

    A、name:組件對應源代碼中的名稱函數

    B、title:組件對應圖形界面中所顯示的名稱工具

    C、font:設置title的字體佈局

三、QGroupBox分組框成員函數

    void setChecked ( bool checked )字體

        設置QGroupBox使能ui

    void setTitle ( const QString & title )this

        設置組合框的標題文本spa

4QGroupBox實例

#include <QtGui/QApplication>
#include <QDialog>
#include <QVBoxLayout>
#include <QGroupBox>
#include <QRadioButton>
#include <QCheckBox>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QDialog w;
    QGroupBox *group = new QGroupBox("option");
    group->setCheckable(true);
    group->setChecked(true);
    QRadioButton *radio1 = new QRadioButton("banana");
    QRadioButton *radio2 = new QRadioButton("pear");
    QRadioButton *radio3 = new QRadioButton("apple");
    radio1->setChecked(true);
    QCheckBox *check = new QCheckBox("rice");
    check->setChecked(true);
    QVBoxLayout *vbox = new QVBoxLayout;
    vbox->addWidget(radio1);
    vbox->addWidget(radio2);
    vbox->addWidget(radio3);
    vbox->addWidget(check);
    group->setLayout(vbox);
    w.setLayout(vbox);
    w.show();
    
    return a.exec();
}

2、QScrollArea滾動區

1QScrollArea組件簡介

    QScrollArea滾動區組件用來顯示子控件的內容的框架,若是子控件的尺寸超過了框架的大小,可使用滾動條,方便查看整個子控件。QScrollArea 能夠給任何QWidget添加滾動條,但通常自定義窗體添加滾動條不顯示。

2QScrollArea組件屬性

    QScrollArea組件屬性設置選項:

    A、name:同上

 B、font:設置文本框的字體

3QScrollArea組件經常使用成員函數

QScrollArea::QScrollAreaQWidget *parent = 0

構造一個父對象爲parent的ScrollArea

void QScrollArea::setWidgetQWidget *widget

設置控件widget爲QScrollArea組件的子控件

QWidget *SCrollArea::takeWidget()

刪除QScrollArea的子控件

 QWidget *QScrollArea::widget()const

返回QScrollArea的子控件

四、QScrollArea實例

#include <QtGui/QApplication>
#include <QLabel>
#include <QImage>
#include <QScrollArea>
#include <QHBoxLayout>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget w;
    QLabel *label = new QLabel(&w);
    QImage image("D:\\QT\\ScrollArea\\1.jpg");
    QHBoxLayout *lay=new QHBoxLayout(&w);
    label->setPixmap(QPixmap::fromImage(image));
    //建立滾動區,
    QScrollArea *scrollarea = new QScrollArea(&w);
    //將Widget組件加入滾動區
    scrollarea->setWidget(label);
    //自動改變滾動區大小
    scrollarea->setWidgetResizable(1);
    //設置滾動區背景顏色
    scrollarea->setBackgroundRole(QPalette::Dark);
    lay->addWidget(scrollarea);
    w.setLayout(lay);
    w.show();
    return a.exec();
}

3、QToolBox工具箱

1QToolBox組件簡介

    QToolBox提供了一系列的頁和隔間,就像Qt Creator中的工具箱同樣。

2QToolBox組件屬性

    QToolBox組件屬性設置選項

    A、name:同上

    B、font:同上

    C、currentIndex:當前活動頁的索引

    D、itemLabel:當前活動頁的標籤

    E、itemName:當前活動頁的名稱

    F、itemBackgroundModel:當前活動頁的背景模式

3QToolBox組件經常使用成員函數

QToolBox::QToolBoxQWidget *parent = 0const char *name = 0QFlags f = 0

構造一個名稱爲name,父對象爲parent和標誌位f的ToolBox

int addItemQWidget *itemconst QIconSet &iconSetconst QString &label

增長一個item到ToolBox的底部,新增長的item的標籤的文本是label,標籤的圖標是iconSet

int addItemQWidget *itemconst QString &label

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

int ToolBox::count()const

返回工具箱中item數目

int ToolBox::currentIndex()const

返回當前活動item的索引

QWidget *QToolBox::currentItem()const

返回當前活動item,若是該ToolBox爲空,返回0

int ToolBox::indexofQWidget *itemconst

返回item的索引

int QToolBox::insertItemint indexQWidget *itemconst QIconSet &iconSetconst QString &label

在索引index處插入一個新的項目,項目是item,標籤圖標是iconSet,標籤文本時label,返回插入item的索引

int QToolBox::insertItemint indexQWidget *itemconst QString &label

在索引index處插入一個新的項目,項目的名稱是item,標籤文本是label,返回插入item的索引。

QWidget *QToolBox::itemint indexconst

返回索引爲index位置的item

QString QToolBox::itemLabelint indexconst

返回索引爲index位置的標籤

int QToolBox::RemoveItemQWidget *item

刪除ToolBox中的item的項目,刪除成功後返回item的索引,不然返回-1

void QToolBox::setCurrentIndexint index

設置索引爲index位置的項目爲當前活動項目

void QToolBox::setCurrentIndexQWidget *item

設置索引item爲當前活動的項目

void QToolBox::setItemLabelint indexconst QString &label

設置label爲索引index位置的項目的標籤文本

四、QToolBox實例

ToolBox.h文件:

#ifndef TOOLBOX_H
#define TOOLBOX_H
#include <QToolBox>
#include <QToolButton>
#include <QGroupBox>
#include <QVBoxLayout>
class ToolBox : public QToolBox
{
    Q_OBJECT
public:
    explicit ToolBox(QWidget *parent = 0);
private:
    QToolButton *button1;
    QToolButton *button2;
    QToolButton *button3;
    QToolButton *button11;
    QToolButton *button12;
};
#endif // TOOLBOX_H

ToolBox.cpp文件:

#include "ToolBox.h"
ToolBox::ToolBox(QWidget *parent) :
    QToolBox(parent)
{
    setWindowTitle("ToolBox");
    //***************水果*****************
    button1 = new QToolButton;
    button1->setText("apple");
    button1->setAutoRaise(TRUE);
    button1->setToolButtonStyle(Qt::ToolButtonFollowStyle);
    button2 = new QToolButton;
    button2->setText("banana");
    button2->setAutoRaise(TRUE);
    button2->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
    button3 = new QToolButton;
    button3->setText("pear");
    button3->setAutoRaise(TRUE);
    button3->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
    //***************添加水果*****************
    QGroupBox *group = new QGroupBox;
    QVBoxLayout *layout = new QVBoxLayout(group);
    layout->setMargin(10);
    layout->setAlignment(Qt::AlignHCenter);
    layout->addWidget(button1);
    layout->addWidget(button2);
    layout->addWidget(button3);
    layout->addStretch();
    //初始化電腦
    button11 = new QToolButton;
    button11->setText("HP");
    button11->setAutoRaise(TRUE);
    button11->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
    button12 = new QToolButton;
    button12->setText("Lenovo");
    button12->setAutoRaise(TRUE);
    button12->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
    //***************添加電腦*****************
    QGroupBox *group2 = new QGroupBox;
    QVBoxLayout *layout2 = new QVBoxLayout(group2);
    layout2->setMargin(10);
    layout2->setAlignment(Qt::AlignHCenter);
    layout2->addWidget(button11);
    layout2->addWidget(button12);
    layout2->addStretch();
    this->addItem((QWidget*)group, "Fruits");
    this->addItem((QWidget*)group2, "Computer");
}

Main.cpp文件:

#include <QtGui/QApplication>

#include "ToolBox.h"

int main(int argc, char *argv[])

{

    QApplication a(argc, argv);

    ToolBox toolbox;

    toolbox.show();

    

    return a.exec();

}

4、QTabWidget選項卡

1QTabWidget選項卡組件簡介

    QTabWidget選項卡組件頂部或底部有一個標籤選項欄,每一個標籤選項都有一個頁面,選擇哪一個頁面,只需單擊對應的標籤便可,或按指定ALT+字母快捷鍵組合便可。

2QTabWidget選項卡組件屬性

    QTabWidget切換卡組件屬性設置選項:

    A、name:同上

    B、currentPage:當前活動的頁面

    C、margin:頁面邊框的空白寬度,默認是0

    D、tabShap:標籤選項的模式

    E、pageName:當前活動頁的名稱

    F、pageTitle:當前活動也得標籤文本

3QTabWidget選項卡組件經常使用成員函數

QTabWidget::QTabWidgetQWidget *parent = 0const char *name = 0WFlags f = 0

構造一個名稱爲name、父對象爲parent和標記爲f的TabWidget

void QTabWidget::addTabQWidget *childconst QString &label[virtual]

增長子頁到TabWidget,子頁控件是child,子頁標籤文本是label

void QTabWidget::addTabQWidget *childconst QIconSet &iconsetconst QString &label[virtual]

增長子頁到TabWidget,子頁控件是child,iconset是圖標,子頁標籤文本是label

QString QTabWidget::tabLabelQWidget *wconst

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

void QTabWidget::changeTabQWidget *wconst QString &label

更改子頁w的標籤文本爲label

void QTabWidget::changeTabQWidget *wconst QIconSet &iconsetconst QString &label

更改子頁w的圖標爲iconset,和更改標籤文本爲label

 int QTabWidget::count()const

返回該TabWidget中子頁的數目

QWidget *QTabWidget::currentPage()const

返回當前活動子頁

int QTabWidget::currentPageIndex()const

返回當前活動子頁的索引

int QTabWidget::indexOfQWidget *wconst

返回子頁w的索引

void QTabWidget::insertTabQWidget *childconst QString &labelint index = -1[virtual]

在索引index處插入新的子頁,子頁控件是child,子頁標籤文本是label。在插入新的子頁時要確保插入的子頁名與標籤文本與TabWidget中的全部子頁不一樣,若是指定index就是在指定的位置插入,不然就和簡單地添加同樣。

void QTabWidget::insetTabQWidget *childconst QIconSet &iconsetconst QString &labelint index = -1[virtual]

在索引index處插入新的子頁,子頁控件是child,子頁標籤文本是label,子頁圖標爲iconset

QString QTabWidget::labelint indexconst

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

QWidget *QTabWidget::pageint indexconst

返回索引index處子頁

void QTabWidget::removePageQWidget *w[virtual slot]

刪除子頁w

void QTabWidget::setCurrentPageint index[slot]

設置索引index處子頁爲當前活動頁

void QTabWidget::setTabLabelQWidget *wconst QString &label

設置子頁w的標籤文本爲label

四、QTabWidget實例

#include <QtGui/QApplication>
#include <QLabel>
#include <QHBoxLayout>
#include <QTabWidget>
#include <QPushButton>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTabWidget *tab = new QTabWidget;
    //第一頁
    QWidget *w = new QWidget(tab);
    QPushButton *button1 = new QPushButton("OK", w);
    QPushButton *button2 = new QPushButton("NO", w);
    QHBoxLayout *hlayout = new QHBoxLayout(w);
    hlayout->addWidget(button1);
    hlayout->addWidget(button2);
    tab->addTab(w, "option1");
    //第二頁
    QLabel *label = new QLabel("QT", tab);
    tab->addTab(label, "option2");
    tab->setWindowTitle("QTabWidget");
    tab->show();
    return a.exec();
}

5、QStackedWidget控件棧

1QStackedWidget組件簡介

    QStackedWidget控件棧,可使開發人員使用棧管理控件,像用棧管理其餘數據類型同樣簡單。控件棧只顯示棧頂的控件,開發人員可使用raiseWidget()函數把棧中任何其餘控件移到棧頂,從而實現控件之間的切換。

2QStackedWidget控件棧屬性

    QStackedWidget控件棧屬性設置選項:

    A、name:同上

    B、currentPage:當前活動的頁面

    C、pageName:當前活動頁的名稱

    D、font:設置該控件內部文本的字體

3QStackedWidget經常使用成員函數

QWidgetStack::QWidgetStackQWidget *parent = 0const char * name = 0

構造一個名稱爲name,父對象爲parent的WidgetStack

int QWidgetStack::addWidgetQWidget *wint id = -1

把控件w添加到控件棧中,標識爲id

int QWidgetStack::idQWidget *wconst

返回控件w的標識

void QWidgetStack::raiseWidgetint id[slot]

把標識爲id的控件升到控件棧的棧頂

void QWidgetStack::raiseWidgetQWidget *w[slot]

把控件w升到控件的棧頂

void QWidgetStack::removeWidgetQWidget *w

把控件w從控件棧中刪除

QWidget *QWidgetStack::widgetint idconst

返回標識爲id的控件

四、QWidgetStack實例

#include <QtGui/QApplication>
#include <QDialog>
#include <QListWidget>
#include <QStackedWidget>
#include <QLabel>
#include <QHBoxLayout>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QDialog w;
    w.setWindowTitle("StackedWidget");
    //設置列表框
    QListWidget *leftlist = new QListWidget(&w);
    leftlist->insertItem(0, "window1");
    leftlist->insertItem(1, "window2");
    leftlist->insertItem(2, "window3");
    //設置堆棧窗體
    QLabel *label1 = new QLabel("WindowTest1\n\tby liming");
    QLabel *label2 = new QLabel("WindowTest2\n\tby liming");
    QLabel *label3 = new QLabel("WindowTest3\n\tby liming");
    QStackedWidget *stack = new QStackedWidget(&w);
    stack->addWidget(label1);
    stack->addWidget(label2);
    stack->addWidget(label3);
    //設置主窗體佈局
    QHBoxLayout *mainLayout = new QHBoxLayout(&w);
    mainLayout->setMargin(5);
    mainLayout->setSpacing(5);
    mainLayout->addWidget(leftlist);
    mainLayout->addWidget(stack,0,Qt::AlignHCenter);
    mainLayout->setStretchFactor(leftlist,1);
    mainLayout->setStretchFactor(stack,3);
    w.connect(leftlist,SIGNAL(currentRowChanged(int)),stack,SLOT(setCurrentIndex(int)));
    w.show();
    
    return a.exec();
}

6、QFrame框架

1QFrame框架組件簡介

    QFrame類是有框架的窗口部件的基類,QFrame框架組件用來存放其餘控件,也可用於裝飾,通常用來做爲更加複雜容器的基礎,也能夠用在form中做爲佔用控件。

2QFrame框架組件屬性

    QFrame框架組件屬性設置選項:

    A、name:同上

    B、Shape framesShape:框架外形格式

    C、Shadow framesShadow:框架陰影格式

    D、frameWidth:框架的寬度(只讀)

    E、LineWidth:線寬

    QFrame::Shadow枚舉值以下:

QFrame::Plain - 框架和內容看來和周圍同樣高

QFrame::Raised - 框架和內容看起來凸起

QFrame::Sunken - 框架和內容看起來凹陷

QFrame::MShadow - 內部的,對於陰影的掩碼

    QFrame::Shape 枚舉值以下:

NoFrame - QFrame不畫任何東西

Box - QFrame在它的內容周圍畫一個框

Panel - QFrame畫一個平板使內容看起來凸起或者凹陷

WinPanel - 像Panel,但QFrame繪製三維效果的方式和Microsoft Windows 同樣

HLine - QFrame繪製一個水平線,但沒有框任何東西(做爲分隔是有用的)

VLine - QFrame繪製一個豎直線,但沒有框任何東西(做爲分隔是有用的)

StyledPanel - QFrame調用QStyle::drawPanel()

3QFrame框架經常使用成員函數

    QFrame::QFrameQWidget *parent = 0const char *name = 0WFlags f = 0

構造一個框架風格爲NoFrame而且1像素框架寬度的框架窗口部件,如:QFrame *f = new();

四、QFrame實例

#include <QtGui/QApplication>
#include <QLabel>
#include <QHBoxLayout>
#include <QTabWidget>
#include <QPushButton>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget *win = new QWidget;
    QLabel *label = new QLabel("Box");
    QLabel *label1 = new QLabel("Panel");
    QLabel *label2 = new QLabel("Winpanel");
    QLabel *label3 = new QLabel("H line");
    QLabel *label4 = new QLabel("V line");
    QLabel *label5 = new QLabel("Styled Panel");
    label->setFrameStyle(QFrame::Box | QFrame::Raised);
    label->setLineWidth(2);
    label1->setFrameStyle(QFrame::Panel | QFrame::Raised);
    label1->setLineWidth(2);
    label2->setFrameStyle(QFrame::WinPanel | QFrame::Raised);
    label2->setLineWidth(2);
    label3->setFrameStyle(QFrame::HLine | QFrame::Raised);
    label3->setLineWidth(2);
    label4->setFrameStyle(QFrame::VLine | QFrame::Raised);
    label4->setLineWidth(2);
    label5->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
    label5->setLineWidth(2);
    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(label);
    layout->addWidget(label1);
    layout->addWidget(label2);
    layout->addWidget(label3);
    layout->addWidget(label4);
    layout->addWidget(label5);
    win->setLayout(layout);
    win->showMaximized();
    return a.exec();
}

7、QWidget組件

1QWidget組件簡介

    QWidget類是全部用戶界面對象的基類,QWidget組件在建立時是不可見的,能夠包含子控件,在刪除Widget時,子控件也一塊兒刪除。

2QWidget組件屬性

    QWidget組件屬性設置選項:

    A、name:同上

    B、font:設置錶盤上的字體

    C、cursor:設置鼠標光標樣式

3QWidget組件經常使用成員函數

QWidget::QWidgetQWidget *parent = 0const char *name = 0WFlags f = 0

構造一個名稱爲name,父對象爲parent的Widget

QWidget *QWidget::childAtint xint ybool includeThis = FALSEconst

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

QWidget *QWidget::childAtconst QPoint &pbool includeThis = FALSEconst

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

void QWidget::drawTextint xint yconst QString &str

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

void QWidget::drawTextconst QPoint &pconst QString &str

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

8、QMdiArea多文檔區域組件

1QMdiArea組件簡介

    QMdiArea組件中文稱做「MDI窗口顯示區」,MDI是 Multiple Document Interface的簡稱,中文意思是多文檔界面,主要適用於完成一項工做時須要用到多個文件。QMainWindow是SDI(Signal Document Interface,單文檔界面)每一個開啓的文件佔據一個視窗,主要適用於全部工做沒有太多文件參與的狀況。

    QMdiSubWindow類繼承自QWidget,主要用來建立MDI子窗體實例

2QMdiArea組件屬性

    QMdiArea組件屬性設置選項;

    A、name:同上

    B、font:同上

    C、viewMode:設置視圖模式Qt提供TabbedView和SubWindowView兩種選擇

    D、documentMode:保存的標籤欄在選項卡視圖模式是否設置爲文件的模式,默認爲false。

    E、tabShape:(當viewMode是TabbedView時)設置該MdiArea的標籤形式Qt提供兩種選擇:Rounded和Triangular。

    F、tabPosition:(當viewMode是TabbedView時)設置標籤所在方向

    G、activeSubWindowName:子窗口的名稱

    H、activeSubWindowTitle:子窗口的標籤

3QMdiArea組件經常使用成員函數

QMdiArea::QMdiAreaQWidget *parent = 0

構造一個父對象爲parent的MdiArea

void QMdiArea::activateNextSubWindow()[slot]

激活下一個窗口

void QMdiArea::activatePreviousSubWindow()[slot]

激活上一個窗口

QMdiSubWindow *QMdiArea::activateSubWindow()const

返回當前活動子窗口,若是當前沒有活動子窗口,返回0

QMdiSubWindow *QMdiArea::addSubWindowQWidget *widgetQt::WindowFlags windowFlags = 0

添加一個新的子窗口部件

void QMdiArea::closeActiveSubWindow()[slot]

關閉當前活動子窗口

void QMdiArea::closeAllSubWindow()[slot]

關閉全部子窗口

QMdiSubWindow *QMdiArea::currentSubWindow()const

函數功能同activeSubWindow(0

void QMdiArea::removeSubWindowQWidget *widget

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

void QMdiArea::setActiveSubWindowQMdiSubWindow *window[slot]

設置子窗口window爲當前活動子窗口

四、QMdiArea實例

#include <QtGui/QApplication>
#include <QMdiArea>
#include <QMdiSubWindow>
#include <QLabel>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QMdiArea *mdi = new QMdiArea;
    QMdiSubWindow *sub = new QMdiSubWindow;
    QLabel *label = new QLabel("hello");
    sub->setWidget(label);
    sub->setAttribute(Qt::WA_DeleteOnClose);
    mdi->addSubWindow(sub);
    mdi->show();
    
    return a.exec();
}

9、QDockWidget停靠窗體

1QDockWidget組件簡介

    QDockWidget停靠窗體組件,能夠做爲一個頂層窗口漂浮在桌面,主要做爲輔助窗體出如今界面中,能夠在不少IDE中看到停靠窗體

    QDockWidget包含工具欄和內容區域,工具欄用於顯示窗口標題,一個浮動按鈕和一個關閉按鈕。QDockWidget能夠做爲子窗口部件的封裝,經過setWidget()設置子窗口部件。自定義的尺寸提示,最小和最大化尺寸已經尺寸策略都必須由子窗口部件來實現。QDockWidget會遵照它們,調整它本身的限制包括框架和工具欄。咱們不該該爲QDockWidget設置尺寸限制,由於它們根據QDockWidget是否鎖住而改變,一個鎖住的QDockWidget窗口部件不 包括框架和小的工具欄。

wKiom1gYBFmwOmbfAADDADPsiW8059.png

2QDockWidget組件屬性

    QDockWidget組件屬性設置選項

    A、name:同上

    B、font:同上

    C、floating:設置DockWidget是否爲可漂浮

    D、feature:保存的停靠窗體一些功能,是否爲可移動,可關閉或浮動等,默認是可移動可關閉和浮動

    E、allowedArea:DockWidget能夠停靠的地方

    F、windowTitle:停靠窗體的標題

    G、dockWidgetArea:設置DockWidget的停靠地方

    H、docked:設置DockWidget是不是停靠着的

3QDockWidget組件經常使用成員函數

QDockWidget::QDockWidgetconst QString &titleQWidget *parent = 0Qt::WindowFlags flags = 0

構造一個標題爲title,父對象爲parent的DockWidget

QDockWidget::QDockWidgetQWidget *parent = 0Qt::WindowFlags flags = 0

構造一個父對象爲parent和標誌位flags的DockWidget

void QDockWidget::setTitleBarWidgetQWidget *widget

設置widget爲DockWidget的標題欄,若是widget爲0,將用默認標題欄代替

QWidget *QDockWidget::titleBarWidget()const

返回DockWidget定義的標題欄,若是沒有定義標題欄,返回0

void QDockWidget::setWidgetQWidget *widget

設置widget爲DockWidget的部件,在調用setWidget函數以前,必須添加布局,不然widget就是不可見的

QWidget *DockWidget::widget()const

返回DockWidget的部件,若是沒有設置部件,則返回0

四、QDockWidget實例

QDockWidget使用步驟:

A、建立QDockWidget對象的停靠窗體

QDockWidget *dock=new QDockWidget(tr("DockWindow1"),this);

第一個參數是停靠窗體的名稱,第二個參數是停靠窗體的父窗體。

B、設置停靠窗體的屬性

dock->setFeatures(QDockWidget::DockWidgetMovable);

C、將組件加入停靠窗體

dock->setWidget(widget);

D、將停靠窗體加入主窗體中

addDockWidget(Qt::RightDockWidgetArea,dock);

QDockWidget使用實例:

#include <QtGui/QApplication>
#include <QTextEdit>
#include <QDockWidget>
#include <QMainWindow>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QMainWindow w;
    w.setWindowTitle("DockWindows");//設置主窗口標題欄文字
    QTextEdit *te=new QTextEdit(&w);  //定義一個QTextEdit對象做爲主窗口
    te->setText("Main Window");
    te->setAlignment(Qt::AlignCenter);
    w.setCentralWidget(te);  //編輯框設置爲主窗口的中央窗口
    //停靠窗口1
    QDockWidget *dock=new QDockWidget("DockWindow1",&w);
    dock->setFeatures(QDockWidget::DockWidgetMovable);//可移動
    dock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);
    QTextEdit *te1 = new QTextEdit();
    te1->setText("Window1,The dock widget can be moved between docks and users");
    dock->setWidget(te1);
      w.addDockWidget(Qt::LeftDockWidgetArea,dock);
    //停靠窗口2
    dock=new QDockWidget("DockWindow2",&w);
  dock->setFeatures(QDockWidget::DockWidgetClosable|
QDockWidget::DockWidgetFloatable);//可關閉、可浮動
    QTextEdit *te2 = new QTextEdit();
    te2->setText("Window2,The dock widget can be detac from the main window,""and float as an independent window,and can be closed");
    dock->setWidget(te2);
    w.addDockWidget(Qt::RightDockWidgetArea,dock);
    //停靠窗口3
    dock=new QDockWidget("DockWindow3",&w);
    dock->setFeatures(QDockWidget::AllDockWidgetFeatures);//全部特性
    QTextEdit *te3 = new QTextEdit();
    te3->setText("Window3,The dock widget can be closed,moved,and float");
    dock->setWidget(te3);
    w.addDockWidget(Qt::RightDockWidgetArea,dock);
    w.show();
    
    return a.exec();
}

wKioL1gYBH7xIrcjAAB99RdTnmc054.png

相關文章
相關標籤/搜索