1、概述
QToolBox是Qt框架中的一个控件,它提供了一个带标签页的容器,用户可以通过点击标签页标题来切换不同的页面。QToolBox类似于一个带有多页选项卡的控件,但每个“选项卡”都是一个完整的页面,而不仅仅是标签。这使得QToolBox非常适合于展示不同类别的信息或功能,而不需要占用大量的屏幕空间。
QToolBox的每个页面都可以包含其他控件,如按钮、文本框、标签等,从而允许开发者创建复杂的用户界面。页面可以通过编程方式动态添加或移除,也可以通过用户交互(如点击标签)来切换。
2、重要方法
QToolBox提供了一系列方法来管理其页面,以下是一些常用的方法:
addItem(QWidget *page, const QString &text)
:向QToolBox中添加一个新页面,并设置页面的标题。removeItem(int index)
:根据索引移除一个页面。setCurrentIndex(int index)
:设置当前显示的页面索引。currentIndex()
:返回当前显示的页面索引。itemText(int index)
:返回指定索引页面的标题。setItemText(int index, const QString &text)
:设置指定索引页面的标题。widget(int index)
:返回指定索引页面的控件指针。setTabTextColor(const QColor &color)
:设置所有标签的文本颜色。setTabTextColor(int index, const QColor &color)
:设置指定索引标签的文本颜色。
3、重要信号
QToolBox提供了几个信号来响应页面切换等事件,但相比于其他Qt控件,它的信号较少。以下是一个重要的信号:
currentChanged(int index)
:当当前显示的页面改变时发出。参数index是新的当前页面的索引。
#include <QApplication>
#include <QToolBox>
#include <QWidget>
#include <QVBoxLayout>
#include <QPushButton>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
// Create main widget
QWidget *mainWidget = new QWidget;
mainWidget->setWindowTitle("QToolBox Demo");
mainWidget->resize(300, 400);
// Create QToolBox
QToolBox *toolBox = new QToolBox;
// Create pages with different widgets
// Page 1
QWidget *page1 = new QWidget;
QVBoxLayout *layout1 = new QVBoxLayout(page1);
layout1->addWidget(new QPushButton("Button 1"));
layout1->addWidget(new QPushButton("Button 2"));
toolBox->addItem(page1, "Page 1");
// Page 2
QWidget *page2 = new QWidget;
QVBoxLayout *layout2 = new QVBoxLayout(page2);
layout2->addWidget(new QPushButton("Button 3"));
layout2->addWidget(new QPushButton("Button 4"));
toolBox->addItem(page2, "Page 2");
// Page 3
QWidget *page3 = new QWidget;
QVBoxLayout *layout3 = new QVBoxLayout(page3);
layout3->addWidget(new QPushButton("Button 5"));
layout3->addWidget(new QPushButton("Button 6"));
toolBox->addItem(page3, "Page 3");
// Set up main layout
QVBoxLayout *mainLayout = new QVBoxLayout(mainWidget);
mainLayout->addWidget(toolBox);
mainWidget->show();
return app.exec();
}
觉得有帮助的话,打赏一下呗。。
需要商务合作(定制程序)的欢迎私信!!