容器
各个控件的名称依次解释如下。
(1) Group Box:组框
QGroupBox 为构建分组框提供了支持。分组框通常带有一个边
框和一个标题栏,作为容器部件来使用,在其中可以布置各种窗口部件。布局时可用作一组控
件的容器,但是需要注意的是,内部通常使用布局控件(如 QBoxLayout)进行布局。
(2) Scroll Area:滚动区域
滚动区域用于在框架中显示子部件的内容。如果小
部件超过框架的大小,视图就会出现滚动条,以便可以查看子小部件的整个区域。
(3) Tool Box:工具箱
QToolBox 类提供了一列选项卡小部件项。工具箱是一个小部件,
它显示一列选项卡在另一列的上面,当前项显示在当前选项卡的下面。
(4) Tab Widget:标签小部件
abWidget 类提供了一组选项卡(多页面)小部件。 QTabWidget
主要是用来分页显示的,每一页一个界面,众多界面公用一块区域,节省了界面大小,很方便
的为用户显示更多的信息。
(5) Stacked WIdget:堆叠小部件
QStackedWidget 类提供了一个小部件堆栈,其中一次只能
看到一个小部件,与 QQ 的设置面板类似。 QStackedWidget 可用于创建类似于 QTabWidget 提
供的用户界面。它是构建在 QStackedLayout 类之上的一个方便的布局小部件。
(6) Frame:帧
(7) Widget:小部件
(8) MDI Area:MDI 区域
(9) Dock Widget:停靠窗体部件
Qt提供了多个基于模板 的容器类,这些容器类可以用于存储指定类型的数据项,容器类是基于模板的类,如常用的容器类QList, T是一个具体的类型,可以是int、float等简单类型,也可以是QString、QDate 等类,但不能是QObject或任何其子类。 T 必须是一个可赋值的类型,即T 必须提供一个缺省的构造函数,一个可复制构造函数和–个赋值运算符。
1
| QList<QString>list; //定义一个字符串列表
|
Qt的容器类分为有序容器( sequential containers) 和关联容器( associative containers)
Qt的有序容器类有QList、QLinkedList、 QVector、 QStack 和QQueue。
Qt 还提供关联容器类QMap、QMultiMap、QHash、 QMultiHash 和QSet。
QTabWidget 继承 QWidget, QTabWidget 类提供了一组选项卡(多页面)小部件。 QTabWidget 主要是用来分页显示的,每一页一个界面,众多界面公用一块区域,节省了界面大小,很方便的为用户显示更多的信息。类似浏览器的多标签页面,所以这个控件在实际项目中也会经常用到 。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #ifndef MAINWINDOW_H #define MAINWINDOW_H
#include <QMainWindow> #include <QTableWidget> #include <QHBoxLayout> #include <QLabel> class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private: QWidget *widget; QTabWidget *tabWidget; QHBoxLayout *hBoxLayout; QLabel *label[3]; }; #endif
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| #include "mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { this->setGeometry( 0, 0, 800, 480); widget = new QWidget(this); this->setCentralWidget(widget); tabWidget = new QTabWidget(); hBoxLayout = new QHBoxLayout(); QList<QString>strLabelList; strLabelList<<"标签1"<<"标签2"<<"标签3"; QList<QString>strTabList; strTabList<<"页面1"<<"页面2"<<"页面3"; QList <QString>iconList; iconList<<":/icons/icon1"<<":/icons/icon2"<<":/icons/icon3"; for(int i = 0; i<3; i++) { label[i] = new QLabel(); label[i] ->setText(strLabelList[i]); label[i] ->setAlignment(Qt::AlignCenter); tabWidget -> addTab(label[i], QIcon(iconList[i]), strTabList[i]); } hBoxLayout->addWidget(tabWidget); widget->setLayout(hBoxLayout); }
|

QstackedWidget
QStackedWidget 继承 QFrame。 QStackedWidget 类提供了一个小部件堆栈,其中一次只能看到一个小部件,与 QQ 的设置面板类似。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| #ifndef MAINWINDOW_H #define MAINWINDOW_H
#include <QMainWindow> #include <QStackedWidget> #include <QHBoxLayout> #include <QListWidget> #include <QLabel>
class MainWindow : public QMainWindow { Q_OBJECT
public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private: QWidget *widget; QHBoxLayout *hBoxLayout; QListWidget *listWidget; QStackedWidget *stackedWidget; QLabel *label[3]; }; #endif
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| #include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { this->setGeometry( 0, 0, 800, 480); widget = new QWidget(this); this->setCentralWidget(widget); hBoxLayout = new QHBoxLayout(); stackedWidget = new QStackedWidget(); listWidget = new QListWidget();
QList <QString>strListWidgetList; strListWidgetList<<"窗口一"<<"窗口二"<<"窗口三";
for(int i = 0; i<3 ; i++) { listWidget -> insertItem(i, strListWidgetList[i] ); } QList<QString>strLabelList; strLabelList<<"标签一"<<"标签二"<<"标签三"; for( int i = 0; i < 3; i++) { label[i] = new QLabel(); label[i] ->setText(strLabelList[i]); label[i] ->setAlignment(Qt::AlignCenter); stackedWidget->addWidget(label[i]); } listWidget->setMaximumWidth(200); hBoxLayout->addWidget(listWidget); hBoxLayout->addWidget(stackedWidget); widget->setLayout(hBoxLayout); connect(listWidget, SIGNAL(currentRowChanged(int)),stackedWidget, SLOT(setCurrentIndex(int)));
} MainWindow::~MainWindow() { }
|
