#include "widget.h" // 包含自定义的widget头文件
#include <QHBoxLayout> // 包含QHBoxLayout头文件,用于水平布局
#include <QTabWidget> // 包含QTabWidget头文件,用于创建标签页控件
#include <QDebug> // 包含QDebug头文件,用于调试输出widget::widget(QWidget *parent) // widget类的构造函数: QWidget(parent) // 调用基类QWidget的构造函数,传入父组件
{ui.setupUi(this); // 通过ui对象设置用户界面QHBoxLayout* HLayout = new QHBoxLayout(this); // 创建一个水平布局对象,并设置当前widget为其父组件QTabWidget* pTabWidget = new QTabWidget(this); // 创建一个标签页控件,并设置当前widget为其父组件pTabWidget->setTabsClosable(true); // 设置标签页可关闭pTabWidget->setMovable(true); // 设置标签页可移动pTabWidget->setTabPosition(QTabWidget::North); // 设置标签页位置在上方pTabWidget->setTabShape(QTabWidget::Triangular); // 设置标签页形状为三角形QWidget* widget1 = new QWidget; // 创建一个QWidget对象widget1->setStyleSheet("background-color:rgb(54,54,54);"); // 设置widget1的背景颜色为深灰色QWidget* widget2 = new QWidget; // 创建第二个QWidget对象widget2->setStyleSheet("background-color:rgb(54,154,54);"); // 设置widget2的背景颜色为绿色QWidget* widget3 = new QWidget; // 创建第三个QWidget对象widget3->setStyleSheet("background-color:rgb(54,54,154);"); // 设置widget3的背景颜色为蓝色pTabWidget->insertTab(0, widget1, "tab1"); // 将widget1作为第一个标签页添加到标签页控件中pTabWidget->insertTab(1, widget2, "tab2"); // 将widget2作为第二个标签页添加pTabWidget->insertTab(2, widget3, "tab3"); // 将widget3作为第三个标签页添加// pTabWidget->setTabVisible(2, false); // 注释掉的代码,用于隐藏第三个标签页,当前未启用pTabWidget->setTabToolTip(2, "this tap 2"); // 设置第三个标签页的工具提示HLayout->addWidget(pTabWidget); // 将标签页控件添加到水平布局中// 连接标签页控件的currentChanged信号到lambda表达式定义的槽函数,用于处理当前标签页变化事件connect(pTabWidget, &QTabWidget::currentChanged, [=](int index) {qDebug() << "index=" << index;});// 连接tabBarDoubleClicked信号到槽函数,用于处理标签栏双击事件connect(pTabWidget, &QTabWidget::tabBarDoubleClicked, [=](int index) {qDebug() << "tabBarDoubleClicked index=" << index;});// 连接tabBarClicked信号到槽函数,用于处理标签栏点击事件connect(pTabWidget, &QTabWidget::tabBarClicked, [=](int index) {qDebug() << "tabBarClicked index=" << index;});// 连接tabCloseRequested信号到槽函数,用于处理标签页关闭请求事件connect(pTabWidget, &QTabWidget::tabCloseRequested, [=](int index) {qDebug() << "tabCloseRequested index=" << index;pTabWidget->removeTab(index); // 响应关闭请求,删除指定索引的标签页});
}widget::~widget() // widget类的析构函数
{}
复盘
setTabsClosable 设置标签页是否可以被关闭
setTabsClosable 是 Qt 框架中 QTabWidget 类的一个成员函数,它用于设置标签页是否可以被关闭。当这个属性被设置为 true 时,每个标签页的右上角会显示一个关闭按钮,用户可以通过点击这个按钮来关闭相应的标签页。
setMovable 允许用户通过拖拽来改变标签页的顺序
setMovable 是 Qt 框架中 QTabWidget 类的一个成员函数,它的作用是允许用户通过拖拽来改变标签页的顺序。当 setMovable 设置为 true 时,用户可以通过鼠标拖动标签页到新的位置,从而改变标签页的顺序。
setTabPosition 设置标签页的位置
setTabPosition
是 Qt 框架中 QTabWidget
类的一个成员函数,用于设置标签页的位置。这个函数允许开发者控制标签页是在窗口的上方、下方、左侧还是右侧显示。
-
设置标签页在上方:
使用QTabWidget::North
作为参数,可以将标签页设置在窗口的上方。pTabWidget->setTabPosition(QTabWidget::North);
-
设置标签页在下方:
使用QTabWidget::South
作为参数,可以将标签页设置在窗口的下方。pTabWidget->setTabPosition(QTabWidget::South);
-
设置标签页在左侧:
使用QTabWidget::West
作为参数,可以将标签页设置在窗口的左侧。pTabWidget->setTabPosition(QTabWidget::West);
-
设置标签页在右侧:
使用QTabWidget::East
作为参数,可以将标签页设置在窗口的右侧。pTabWidget->setTabPosition(QTabWidget::East);
setTabShape 设置标签页的形状
setTabShape
是 Qt 框架中 QTabWidget
类的一个成员函数,用于设置标签页的形状。这个函数允许开发者自定义标签页的外观,以适应不同的设计需求和用户偏好。
-
设置为普通矩形标签页:
使用QTabWidget::Rounded
作为参数,可以将标签页设置为带有圆角的矩形形状。pTabWidget->setTabShape(QTabWidget::Rounded);
-
设置为三角形标签页:
使用QTabWidget::Triangular
作为参数,可以将标签页设置为三角形形状。这种形状通常用于需要更紧凑布局的界面。pTabWidget->setTabShape(QTabWidget::Triangular);
insertTab 添加一个新的标签页
insertTab 是 Qt 框架中 QTabWidget 类的一个成员函数,用于向标签页控件中添加一个新的标签页。这个函数允许你指定新标签页的索引位置、要添加的控件(通常是 QWidget 的子类),以及标签页的标题或图标。
添加标签页:
使用 insertTab(int index, QWidget *widget, const QString &text)
可以向 QTabWidget 中的指定位置插入一个标签页。其中 index 是新标签页的索引位置,widget 是要作为标签页内容的控件,text 是标签页的标题。
QWidget *newTabPage = new QWidget;
newTabPage->setStyleSheet("background-color: lightgray;");
pTabWidget->insertTab(0, newTabPage, "New Tab");
setTabToolTip 设置标签页工具提示
setTabToolTip
是 Qt 框架中 QTabWidget
类的一个成员函数,它用于为特定的标签页设置工具提示(tooltip)。当用户将鼠标悬停在标签页上时,工具提示会显示出来,提供有关该标签页的额外信息或说明。
设置工具提示文本:
使用 setTabToolTip(int index, const QString &tip)
可以为指定索引的标签页设置工具提示。其中 index
是标签页的索引,tip
是要显示的工具提示文本。
pTabWidget->setTabToolTip(0, "This is the first tab");
QTabWidget的四个信号
-
currentChanged:
- 信号声明:
void QTabWidget::currentChanged(int index)
- 触发时机: 当当前选中的标签页发生变化时,无论是通过用户点击、拖动还是程序代码更改,都会发出此信号,并带有新选中标签页的索引。
- 信号声明:
-
tabBarDoubleClicked:
- 信号声明:
void QTabWidget::tabBarDoubleClicked(int index)
- 触发时机: 当用户双击标签栏上的某个标签页时发出此信号,参数
index
是被双击的标签页的索引。
- 信号声明:
-
tabBarClicked:
- 信号声明:
void QTabWidget::tabBarClicked(int index)
- 触发时机: 当用户点击标签栏上的某个标签页时发出此信号,无论该点击是否导致了标签页的切换。参数
index
是被点击的标签页的索引。
- 信号声明:
-
tabCloseRequested:
- 信号声明:
void QTabWidget::tabCloseRequested(int index)
- 触发时机: 当用户点击了可关闭的标签页上的关闭按钮时发出此信号。参数
index
是请求关闭的标签页的索引。
- 信号声明:
结尾
最后,感谢您阅读我的文章,希望这些内容能够对您有所启发和帮助。如果您有任何问题或想要分享您的观点,请随时在评论区留言。
同时,不要忘记订阅我的博客以获取更多有趣的内容。在未来的文章中,我将继续探讨这个话题的不同方面,为您呈现更多深度和见解。
谢谢您的支持,期待与您在下一篇文章中再次相遇!