转载:https://subingwen.cn/qt/qt-containers/

1、QWidget

这个类是所有窗口类的父类,可以作为独立窗口使用,也可以内嵌到其它窗口中使用。
Qt 中的所有控件都属于窗口类, 因此这个类也是所有控件类的基类。
如果一个窗口中还有子窗口, 为了让子窗口有序排列, 这时候我们可以选择一个 QWidget 类型的容器,将子窗口放到里边,然后再给这个 QWidget 类型窗口进行布局操作。

2、QFrame

QFrame 就是一个升级版的 QWidget, 它继承了 QWidget 的属性,并且做了拓展,这种类型的容器窗口可以提供边框,并且可以设置边框的样式、宽度以及边框的阴影。

3、QGroupBox

bool QGroupBox::isCheckable() const;
// 设置是否在组框中显示一个复选框
void QGroupBox::setCheckable(bool checkable);

Qt::Alignment QGroupBox::alignment() const;
// 设置组框标题的对其方式
void QGroupBox::setAlignment(int alignment);

QString QGroupBox::title() const;
// 设置组框的标题
void QGroupBox::setTitle(const QString &title);

bool QGroupBox::isChecked() const;
// 设置组框中复选框的选中状态
[slot] void QGroupBox::setChecked(bool checked);

组框中的 flat 属性没有对应的 API 函数,只能在属性窗口中设置,它控制的是窗口边框的绘制方式,如果打开该属性,组框的边框就消失了

4、 QScrollArea

类型的容器,里边可以放置一些窗口控件,当放置的窗口控件大于当前区域导致无法全部显示的时候, 滚动区域容器会自动添加相应的滚动条(水平方向或者垂直方向), 保证放置到该区域中的所有窗口内容都可以正常显示出来。对于使用者不需要做太多事情,只需要把需要显示的窗口放到滚动区域中就行了。

在某些特定环境下,我们需要动态的往滚动区域内部添加要显示的窗口,或者动态的将显示的窗口移除,这时候就必须要调用对应的 API 函数来完成这部分操作了。主要 API 有两个 添加 - setWidget(), 移除 - takeWidget()

// 给滚动区域设置要显示的子窗口widget
void QScrollArea::setWidget(QWidget *widget);
// 删除滚动区域中的子窗口, 并返回被删除的子窗口对象
QWidget *QScrollArea::takeWidget();

5、QToolBox

QToolBox 工具箱控件,可以存储多个子窗口,该控件可以实现类似 QQ 的抽屉效果,每一个抽屉都可以设置图标和标题,并且对应一个子窗口,通过抽屉按钮就可以实现各个子窗口显示的切换。

// 构造函数
QToolBox::QToolBox(QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags());// 公共成员
/*
addItem(), insertItem()函数相关参数:- widget: 添加到工具箱中的选项卡对应的子窗口对象- icon: 工具箱新的选项卡上显示的图标- text: 工具箱新的选项卡上显示的标题- index: 指定在工具箱中插入的新的选项卡的位置
*/
// 给工具箱尾部添加一个选项卡, 每个选项卡在工具箱中就是一个子窗口, 即参数widget
int QToolBox::addItem(QWidget *widget, const QString &text);
int QToolBox::addItem(QWidget *widget, const QIcon &icon, const QString &text);
// 在工具箱的指定位置添加一个选项卡, 即添加一个子窗口
int QToolBox::insertItem(int index, QWidget *widget, const QString &text);
int QToolBox::insertItem(int index, QWidget *widget, const QIcon &icon, const QString &text);
// 移除工具箱中索引index位置对应的选项卡, 注意: 只是移除对应的窗口对象并没有被销毁
void QToolBox::removeItem(int index);// 设置索引index位置的选项卡是否可用, 参数 enabled=true为可用, enabled=false为禁用
void QToolBox::setItemEnabled(int index, bool enabled);
// 设置工具箱中index位置选项卡的图标
void QToolBox::setItemIcon(int index, const QIcon &icon);
// 设置工具箱中index位置选项卡的标题
void QToolBox::setItemText(int index, const QString &text);
// 设置工具箱中index位置选项卡的提示信息(需要鼠标在选项卡上悬停一定时长才能显示)
void QToolBox::setItemToolTip(int index, const QString &toolTip);// 如果位置索引的项已启用,则返回true;否则返回false。
bool QToolBox::isItemEnabled(int index) const;
// 返回位置索引处项目的图标,如果索引超出范围,则返回空图标。
QIcon QToolBox::itemIcon(int index) const;
// 返回位于位置索引处的项的文本,如果索引超出范围,则返回空字符串。
QString QToolBox::itemText(int index) const;
// 返回位于位置索引处的项的工具提示,如果索引超出范围,则返回空字符串。
QString QToolBox::itemToolTip(int index) const;// 得到当前工具箱中显示的选项卡对应的索引
int QToolBox::currentIndex() const;
// 返回指向当前选项卡对应的子窗口的指针,如果没有这样的项,则返回0。
QWidget *QToolBox::currentWidget() const;
// 返回工具箱中子窗口的索引,如果widget对象不存在,则返回-1
int QToolBox::indexOf(QWidget *widget) const;
// 返回工具箱中包含的项的数量。
int QToolBox::count() const;// 信号
// 工具箱中当前显示的选项卡发生变化, 该信号被发射, index为当前显示的新的选项卡的对应的索引
[signal] void QToolBox::currentChanged(int index);// 槽函数
// 通过工具箱中选项卡对应的索引设置当前要显示哪一个选项卡中的子窗口
[slot] void QToolBox::setCurrentIndex(int index);
// 通过工具箱中选项卡对应的子窗口对象设置当前要显示哪一个选项卡中的子窗口
[slot] void QToolBox::setCurrentWidget(QWidget *widget);

6、QTabWidget

QTabWidget 的一种带标签页的窗口,在这种类型的窗口中可以存储多个子窗口,每个子窗口的显示可以通过对应的标签进行切换

// 构造函数
QTabWidget::QTabWidget(QWidget *parent = Q_NULLPTR);// 公共成员函数
/*
添加选项卡addTab()或者插入选项卡insertTab()函数相关的参数如下:- page: 添加或者插入的选项卡对应的窗口实例对象- label: 添加或者插入的选项卡的标题- icon: 添加或者插入的选项卡的图标- index: 将新的选项卡插入到索引index的位置上
*/
int QTabWidget::addTab(QWidget *page, const QString &label);
int QTabWidget::addTab(QWidget *page, const QIcon &icon, const QString &label);
int QTabWidget::insertTab(int index, QWidget *page, const QString &label);
int QTabWidget::insertTab(int index, QWidget *page, const QIcon &icon, const QString &label);
// 删除index位置的选项卡
void QTabWidget::removeTab(int index);// 得到选项卡栏中的选项卡的数量
int count() const;
// 从窗口中移除所有页面,但不删除它们。调用这个函数相当于调用removeTab(),直到选项卡小部件为空为止。
void QTabWidget::clear();
// 获取当前选项卡对应的索引
int QTabWidget::currentIndex() const;
// 获取当前选项卡对应的窗口对象地址
QWidget *QTabWidget::currentWidget() const;
// 返回索引位置为index的选项卡页,如果索引超出范围则返回0。
QWidget *QTabWidget::widget(int index) const;/*
标签上显示的文本样式为枚举类型 Qt::TextElideMode, 可选项为:- Qt::ElideLeft: 省略号应出现在课文的开头,例如:.....是的,我很帅。- Qt::ElideRight: 省略号应出现在文本的末尾,例如:我帅吗.....。- Qt::ElideMiddle: 省略号应出现在文本的中间,例如:我帅.....很帅。- Qt::ElideNone: 省略号不应出现在文本中
*/
// 获取标签上显示的文本模式
Qt::TextElideMode QTabWidget::elideMode() const;
// 如何省略标签栏中的文本, 此属性控制在给定的选项卡栏大小没有足够的空间显示项时如何省略项。
void QTabWidget::setElideMode(Qt::TextElideMode);// 得到选项卡上图标的尺寸信息
QSize QTabWidget::iconSize() const
// 设置选项卡上显示的图标大小
void QTabWidget::setIconSize(const QSize &size)// 判断用户是否可以在选项卡区域内移动选项卡, 可以返回true, 否则返回false
bool QTabWidget::isMovable() const;
// 此属性用于设置用户是否可以在选项卡区域内移动选项卡。默认情况下,此属性为false;
void QTabWidget::setMovable(bool movable);// 判断选项卡是否可以自动隐藏, 如果可以自动隐藏返回true, 否则返回false
bool QTabWidget::tabBarAutoHide() const;
// 如果为true,则当选项卡栏包含少于2个选项卡时,它将自动隐藏。默认情况下,此属性为false。
void QTabWidget::setTabBarAutoHide(bool enabled);// 判断index对应的选项卡是否是被启用的, 如果是被启用的返回true, 否则返回false
bool QTabWidget::isTabEnabled(int index) const;
// 如果enable为true,则在索引位置的页面是启用的;否则,在位置索引处的页面将被禁用。
void QTabWidget::setTabEnabled(int index, bool enable);// 得到index位置的标签对应的图标
QIcon QTabWidget::tabIcon(int index) const;
// 在位置索引处设置标签的图标。
void QTabWidget::setTabIcon(int index, const QIcon &icon);/*
选项卡标签的位置通过枚举值进行指定, 可使用的选项如下:- QTabWidget::North: 北(上), 默认- QTabWidget::South: 南(下)- QTabWidget::West:    西(左)- QTabWidget::East:  东(右)
*/
// 得到选项卡中显示的标签的位置, 即: 东, 西, 南, 北
TabPosition QTabWidget::tabPosition() const;
// 设置选项卡中标签显示的位置, 默认情况下,此属性设置为North。
void QTabWidget::setTabPosition(TabPosition);/*
选项卡标签的形状通过枚举值进行指定, 可使用的选项如下:- QTabWidget::Rounded: 标签以圆形的外观绘制。这是默认形状- QTabWidget::Triangular: 选项卡以三角形外观绘制。
*/
// 获得选项卡标签的形状
TabShape QTabWidget::tabShape() const;
// 设置选项卡标签的形状
void QTabWidget::setTabShape(TabShape s);// 得到index位置的标签的标题
QString QTabWidget::tabText(int index) const;
// 设置选项卡index位置的标签的标题
void QTabWidget::setTabText(int index, const QString &label);// 获取index对应的标签页上设置的提示信息
QString QTabWidget::tabToolTip(int index) const;
// 设置选项卡index位置的标签的提示信息(鼠标需要悬停在标签上一定时长才能显示)
void QTabWidget::setTabToolTip(int index, const QString &tip);// 判断选项卡标签也上是否有关闭按钮, 如果有返回true, 否则返回false
bool QTabWidget::tabsClosable() const;
// 设置选项卡的标签页上是否显示关闭按钮, 该属性默认情况下为false
void QTabWidget::setTabsClosable(bool closeable);// 判断选项卡栏中是否有滚动按钮, 如果有返回true, 否则返回false
bool QTabWidget::usesScrollButtons() const;
// 设置选项卡栏有许多标签时,它是否应该使用按钮来滚动标签。
// 当一个选项卡栏有太多的标签时,选项卡栏可以选择扩大它的大小,或者添加按钮,让标签在选项卡栏中滚动。
void QTabWidget::setUsesScrollButtons(bool useButtons);// 判断窗口是否设置了文档模式, 如果设置了返回true, 否则返回false
bool QTabWidget::documentMode() const;
// 此属性保存选项卡小部件是否以适合文档页面的模式呈现。这与macOS上的文档模式相同。
// 不设置该属性, QTabWidget窗口是带边框的, 如果设置了该属性边框就没有了。
void QTabWidget::setDocumentMode(bool set);

信号

// 每当当前页索引改变时,就会发出这个信号。参数是新的当前页索引位置,如果没有新的索引位置,则为-1
[signal] void QTabWidget::currentChanged(int index);
// 当用户单击索引处的选项卡时,就会发出这个信号。index指所单击的选项卡,如果光标下没有选项卡,则为-1。
[signal] void QTabWidget::tabBarClicked(int index)
// 当用户双击索引上的一个选项卡时,就会发出这个信号。
// index是单击的选项卡的索引,如果光标下没有选项卡,则为-1。
[signal] void QTabWidget::tabBarDoubleClicked(int index);
// 此信号在单击选项卡上的close按钮时发出。索引是应该被删除的索引。     
[signal] void QTabWidget::tabCloseRequested(int index);

槽函数

7、QStackedWidget

QStackedWidget 栈类型窗口,在这种类型的窗口中可以存储多个子窗口,但是只有其中某一个可以被显示出来,至于是哪个子窗口被显示,需要在程序中进行控制,在这种类型的窗口中没有直接切换子窗口的按钮或者标签。

// 构造函数
QStackedWidget::QStackedWidget(QWidget *parent = Q_NULLPTR);// 公共成员函数
// 在栈窗口中后边添加一个子窗口, 返回这个子窗口在栈窗口中的索引值(从0开始计数)
int QStackedWidget::addWidget(QWidget *widget);
// 将子窗口widget插入到栈窗口的index位置
int QStackedWidget::insertWidget(int index, QWidget *widget);
// 将子窗口widget从栈窗口中删除
void QStackedWidget::removeWidget(QWidget *widget);// 返回栈容器窗口中存储的子窗口的个数
int QStackedWidget::count() const;
// 得到当前栈窗口中显示的子窗口的索引
int QStackedWidget::currentIndex() const;
// 得到当前栈窗口中显示的子窗口的指针(窗口地址)
QWidget *QStackedWidget::currentWidget() const;
// 基于索引index得到栈窗口中对应的子窗口的指针
QWidget *QStackedWidget::widget(int index) const;
// 基于子窗口的指针(实例地址)得到其在栈窗口中的索引
int QStackedWidget::indexOf(QWidget *widget) const;// 信号
// 切换栈窗口中显示子窗口, 该信息被发射出来, index为新的当前窗口对应的索引值
[signal] void QStackedWidget::currentChanged(int index);
// 当栈窗口的子窗口被删除, 该信号被发射出来, index为被删除的窗口对应的索引值
[signal] void QStackedWidget::widgetRemoved(int index);// 槽函数
// 基于子窗口的index索引指定当前栈窗口中显示哪一个子窗口
[slot] void QStackedWidget::setCurrentIndex(int index);
[slot] void QStackedWidget::setCurrentWidget(QWidget *widget);

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 设置默认显示的窗口ui->stackedWidget->setCurrentWidget(ui->window1);connect(ui->showWin1, &QPushButton::clicked, this, [=](){// 切换显示第一个子窗口ui->stackedWidget->setCurrentIndex(0);});connect(ui->showWin2, &QPushButton::clicked, this, [=](){// 切换显示第二个子窗口, 调用这两个槽函数中的任何一个都可以ui->stackedWidget->setCurrentWidget(ui->window2);});
}

Qt 中容器类型的控件相关推荐

  1. c#,c++,qt中多线程访问UI控件线程的问题汇总

    c#和MFC中可以创建UI控件及模态/非模态对话框,Qt中只能在主UI线程中创建访问UI控件. c#和MFC中可以通过全局变量或指针句柄等方式在工作线程中访问其他UI线程控件,其中c#需要Invoke ...

  2. Qt中鼠标滑过控件由箭头变成手型QWidget::setCusor()

    qt中,当要实现鼠标进入某个控件区域时,鼠标箭头变为手型效果,可以用函数QWidget::setCursor(),其中该函数原型如下所示:(该代码对于任何继承于QWidget的控件都有效,也就是无论是 ...

  3. QT中常用的输入控件

    Qt Creator有15种Input Widgets,如下图:     Input Widgets的Qt类和名称介绍如下表 控件类     控件名     中文名     控件类     控件名   ...

  4. qt中创键树形控件QTreeWidget与QStackWidget相绑定

    引言 实现点击下拉列表的项对应的跳转到相应的堆栈窗口,且每个堆栈窗口中都有各自的树形控件,更换可执行文件所在目录下的文件data.json后,点击更新按钮,可以更新所有堆栈窗口的树形控件. 效果 示例 ...

  5. ASP.NET中共有哪几种类型的控件?其中,HTML控件、HTML服务器控件和WEB服务器控件之间有什么区别

    [考点] ASP.NET中的控件类型理解. [出现频率] ★★★☆☆ [解答] ASP.NET的控件包括WEB服务器控件.WEB用户控件.WEB自定义控件.HTML服务器控件和HTML控件.HTML控 ...

  6. Qt项目UI文件中新添加的控件在代码中不识别的问题

    ui->XXXX 在UI界面中新添加了控件,但是在代码中怎么也不出现,或者划红线 我看不少人说备份删除文件再添加,或者关闭QT再打开... 其实只要右键项目清除构建,然后重新构建就可以了, 这有 ...

  7. c++ qt qlistwidget清空_Qt编写控件属性设计器12-用户属性

    一.前言 用户属性是后面新增加的一个功能,自定义控件如果采用的Q_PROPERTY修饰的属性,会自动识别到属性栏中,这个一般称为控件属性,在组态设计软件中,光有控件本身的控件属性还是不够的,毕竟这些属 ...

  8. QT开发及实例学习之六控件

    文章目录 一.按钮组(Buttons) 二.输入部件组(Input Widgets) 1.QDateTime类 2.QTimer类 三.显示控件组(Display Widgets) 1.Text Br ...

  9. JTable是Swing编程中很常用的控件

    JTable是Swing编程中很常用的控件,这里总结了一些常用方法以备查阅. 一.创建表格控件的各种方式: 1) 调用无参构造函数. JTable table = new JTable(); 2) 以 ...

最新文章

  1. 计算机视觉与图像处理、模式识别、机器学习学科之间的关系
  2. mysql basedal_spring与MyBatis结合
  3. 园区医保和其他地方的医保的区别
  4. SAP CRM One Order跟踪和日志工具CRMD_TRACE_SET
  5. SDN的发展壮大确实在蚕食物理网络基础设施的阵地
  6. php 连接符.,PHP怎么在数字之间添加连接符
  7. 求一个简单的php购物车,PHP简单实现购物车
  8. CA ARCserve Backup系列(1)—安装
  9. python怎么绘制坐标图像_如何使用给定的坐标和python opencv在图像中绘制点?
  10. IOS 10.3.3 Meridian越狱
  11. google服务框架 闪退_华为的谷歌服务打不开怎么办?
  12. PMOS管的简单应用
  13. Android 中Fragment之间传递数据
  14. hdu 2502月之数
  15. Excel表格数据导入到Oracle
  16. ubuntu软件:无法从“extensions.gnome.org”下载更新
  17. 火狐浏览器Firefox Firebug使用方法
  18. 处理机和CPU的区别
  19. python split()函数
  20. 去卢沟桥,看晓月还是数弹孔?

热门文章

  1. 遗传算法占用计算机空间,遗传算法综述摘要.doc
  2. druiddatasource配置_Springboot属性注入 Java配置和Value配置
  3. java 安装报错2503_Windows安装Node.js报错:2503、2502的解决方法
  4. 推荐两个非常实用的,Python装饰器
  5. Python字典(dict )的几种遍历方式
  6. Python基础练习题合集
  7. python练习题:使用循环和函数实现一个摇骰子小游戏
  8. python3反转列表的三种方式
  9. Python:图片懒加载技术
  10. 如何知道是否开启opcode_你知道如何查询企业是否有ICP经营许可证吗?