Qt 容器控件之Tab Widget 使用详解
目录
功能
属性设置
相关API
信号
槽函数
功能
QTabWidget 的一种带标签页的窗口,在这种类型的窗口中可以存储多个子窗口,每个子窗口的显示可以通过对应的标签进行切换。
属性设置
相关API
// 构造函数
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);
槽函数
// 设置当前窗口中显示选项卡index位置对应的标签页内容
[slot] void QTabWidget::setCurrentIndex(int index);// 设置当前窗口中显示选项卡中子窗口widget中的内容
[slot] void QTabWidget::setCurrentWidget(QWidget *widget);
示例代码
// mainwindow.cpp
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 点击了标签上的关闭按钮connect(ui->tabWidget, &QTabWidget::tabCloseRequested, this, [=](int index){// 保存信息QWidget* wg = ui->tabWidget->widget(index);QString title = ui->tabWidget->tabText(index);m_widgets.enqueue(wg);m_names.enqueue(title);// 移除tab页ui->tabWidget->removeTab(index);ui->addBtn->setEnabled(true);});// 当标签被点击了之后的处理动作connect(ui->tabWidget, &QTabWidget::tabBarClicked, this, [=](int index){qDebug() << "我被点击了一下, 我的标题是: " << ui->tabWidget->tabText(index);});// 切换标签之后的处理动作connect(ui->tabWidget, &QTabWidget::currentChanged, this, [=](int index){qDebug() << "当前显示的tab页, 我的标题是: " << ui->tabWidget->tabText(index);});// 点击添加标签按钮点击之后的处理动作connect(ui->addBtn, &QPushButton::clicked, this, [=](){// 将被删除的标签页添加到窗口中// 1. 知道窗口对象, 窗口的标题// 2. 知道添加函数ui->tabWidget->addTab(m_widgets.dequeue(), m_names.dequeue());if(m_widgets.empty()){ui->addBtn->setDisabled(true);}});
}
Qt 容器控件之Tab Widget 使用详解相关推荐
- C++框架_之Qt的信号和槽的详解
目录 C++_之Qt的信号和槽的详解 1.概述 1.1对象树(子对象动态分配空间不需要释放) 2.信号和槽 Qt5 的书写方式:(推荐的使用)★★★★★ Qt4 的书写方式: 3.自定义信号槽 3.1 ...
- Qt图形视图框架:QGraphicsScene详解
一.描述 1.场景提供了一个用于管理大量2D图形项的平面.该类充当图形项的容器. 它与视图一起用于可视化2D曲面上的图形图形项. 2.场景没有自己的视觉外观,只负责管理图形项. 3.场景的最大优势之一 ...
- qt布局嵌套_QDockWidget嵌套布局详解-实现Visual Studio布局
概述 许多工程软件,如Qt Creator,VS,matlab等,都是使用dock布局窗口,这样用户可以自定义界面,自由组合窗口. Qt的嵌套布局由QDockWidget完成,用Qt Creator拖 ...
- qt on android qml,Qt on Android: Qt Quick 之 Hello World 图文详解
在上一篇文章,<Qt on Android:QML 语言基础>中,我们介绍了 QML 语言的语法,在最后我们遗留了一些问题没有展开,这篇呢,我们就正式开始撰写 Qt Quick 程序,而那 ...
- QT的事件分发、事件过滤器详解
一.事件的流向 QT的各种控件(QObject的子类)都有事件处理成员函数,例如: bool QObject::event(QEvent *e);//所有事件 dragEnterEvent(QDrag ...
- 学习TeXworks编辑器(二)TAB补全详解与自定义补全命令总结
文章目录 写在前面 内置补全命令及记忆 希腊字母的补全 规则 对应表 小写希腊字母 大写希腊字母 作为变量的希腊字母 常用数学命令(字体)的补全 常用环境的补全 自定义补全命令 结语 参考文献 写在前 ...
- Qt总结之十三:QUDPSocket详解
前言 (一)和本文有关的博客 八大字符转换方式可参考文章:https://blog.csdn.net/Aidam_Bo/article/details/84111776 uint8_t / uint1 ...
- Qt之事件过滤器(eventFilter)详解
1.2.1 Qt中事件是如何进行传递 1.2.2 Qt中的事件过滤器(eventFilter) 1.2.3 如何自己模拟发送事件消息 一.Qt中事件过滤器详解 我们先看下另外两个相关的方法,一个是给对 ...
- Qt线程之QRunnable的使用详解
概述 说到线程通常会想到QThread,但其实Qt中创建线程的方式有多种,这里主要介绍其中一种QRunnable,QRunnable和QThread用法有些不同,并且使用场景也有区别.接下来就来看看Q ...
最新文章
- 吴恩达老师深度学习视频课笔记:循环神经网络
- 【对讲机的那点事】关于对讲机锂电池你了解多少?
- 速算C语言程序设计,C语言程序设计课程设计-速算24.doc
- java build.gradle 详解_java – Gradle构建失败[无法解析配置的所有依赖项’:compile’.]...
- JAVA基础知识(4)
- MySQL索引和SQL调优手册
- android一些若干回调测试
- 谷歌浏览器怎么设置字体 chrome默认字体设置方法
- spring-boot两小时入门笔记
- VGG16关于学习率如何影响精度效应
- 设计素材模板|艺术感中国风海报
- object转换成Integer
- gopher协议总结
- selenium+python爬取京东评论最多的计算机配置信息
- 函数u=(x,y,z)在点P处延方向向量n的方向导数的计算
- Fiddler简单使用手册
- 坑逼的PL2303与WIN11
- 线性代数28——复矩阵和快速傅立叶变换
- 多么痛的领悟-代码优化导致的BUG
- C++ 小玩意2.0