QT控件之QTabWidget使用

QTabWidget常用api、信号槽

  • 添加/删除tab页

    int addTab(QWidget *widget, const QString &);

    int addTab(QWidget *widget, const QIcon& icon, const QString &label);

    int insertTab(int index, QWidget *widget, const QString &);

    int insertTab(int index, QWidget *widget, const QIcon& icon, const QString &label);

    void removeTab(int index);

    如上insertTab和addTab区别在于insertTab可以指定

  • 属性设置

    //设置方向

    tabWidget->setTabPosition(QTabWidget::North);

    //设置tab是否含有x进行关闭

    tabWidget->setTabsClosable(true);

    //设置tab形状tixing

    tabWidget->setTabShape(QTabWidget::Triangular);

    //设置tab是否可移动

  • 信号与槽

    槽函数:

    void setCurrentIndex(int index);

    void setCurrentWidget(QWidget *widget);

    信号:

    void currentChanged(int index); //切换tab页

    void tabCloseRequested(int index); //点击close关闭tab页

    void tabBarClicked(int index); //tab页被单击

    void tabBarDoubleClicked(int index); //tab页被双击

bash 复制代码
QTabWidget* tabWidget = new QTabWidget(this);

    QWidget *w1 = new QWidget(this);
    w1->setStyleSheet("background-color:red");

    QWidget *w2 = new QWidget(this);
    w2->setStyleSheet("background-color:green");

    QWidget *w3 = new QWidget(this);
    w3->setStyleSheet("background-color:gray");

    //添加tab
    tabWidget->insertTab(0, w1, "text_1");
    tabWidget->insertTab(1, w2, "text_2");
    tabWidget->insertTab(2, w3, "text_3");

    //设置文本提示
    tabWidget->setTabToolTip(1, "this is text_2 display.");

    //设置方向
    tabWidget->setTabPosition(QTabWidget::North);

    //设置tab是否含有x进行关闭
    tabWidget->setTabsClosable(true);

    //设置tab形状tixing
    tabWidget->setTabShape(QTabWidget::Triangular);

    //设置tab是否可移动
    tabWidget->setMovable(true);

    QVBoxLayout* layout = new QVBoxLayout(this);
    layout->addWidget(tabWidget);
    setLayout(layout);

    //常用信号
    connect(tabWidget, &QTabWidget::currentChanged, this, [=](int index){
        qDebug() << "current changed index: " << index;

        qDebug() << "current text: " << tabWidget->tabText(index);

    });

    connect(tabWidget, &QTabWidget::tabBarClicked, this, [=](int index){
        qDebug() << "tabbar clicked index: " << index;
    });

    connect(tabWidget, &QTabWidget::tabBarDoubleClicked, this, [=](int index){
        qDebug() << "tabbar double clicked index: " << index;
    });

    //点击x进行关闭tab,该信号被触发
    connect(tabWidget, &QTabWidget::tabCloseRequested, this, [=](int index){
        qDebug() << "tab close requested index: " << index;

        tabWidget->removeTab(index);
    });

QTabWidget qss样式表

bash 复制代码
/*把显示界面向上移动*/
QTabWidget::pane
{
	border-top:1px solid #EAEAEA;
	position:absolute;
	top:-0.1px;
}

QTabBar::tab
{
	width:100px;
	height:32px;
	font-size:16px;
	font-family:Microsoft YaHei;
	font-weight:400;
	background:#FFFFFF;
	border:2px solid #FFFFFF;
	border-bottom-color:#FFFFFF;
	border-top-left-radius:4px;
	border-top-right-radius:4px;
	padding:20px;
}

QTabBar::tab:selected
{
	color:#FFFFFF;
	border-color:#FFFFFF;
	border-bottom-color:4BA4F2;
}

QTabBar::tab:!selected
{
	color:#B2B2B2;
	border-color:#FFFFFF;
	border-bottom-color:FFFFFF;
}
QTabBar::tab:hover:!selected
{
	color:red;              /*鼠标悬停时,未选中标签文字颜色变深*/
	background-color:#F5F5F5;   /*背景设置为浅灰色以区别*/
}
相关推荐
阿里嘎多学长6 分钟前
2026-09-20 GitHub 热点项目精选
开发语言·程序员·github·代码托管
江湖人称菠萝包1 小时前
【Qt】《Qt 5.9 C++开发指南》笔记-Chapter9-Qt Charts
笔记·qt·qt5
扶尔魔ocy1 小时前
【QT android】环境安装及第一个QT项目
qt·andriod开发
weixin_307779132 小时前
C++代码实现MATLAB中的ode23tb函数功能
开发语言·c++·算法·matlab
2601_966949652 小时前
为什么量化回测中 for 循环比 DataFrame 慢三个数量级?从向量化原理讲起
开发语言·python·pandas·股票数据·quantdash
边境悍匪4 小时前
蜗牛学苑 Java 智能体学习 Day45|Knife4j+SpringBoot3、书城项目整合 MyBatis 思维导图复盘
java·开发语言·vue.js·学习·spring
我的xiaodoujiao4 小时前
Django 基础知识详细图文教程 9-Django 模板引擎 2
开发语言·数据库·后端·django
菜鸟~noob2334 小时前
【太空电子战】从CCS到Meadowlands:反通信系统的二十年演进史【含matlab代码】
开发语言·matlab
江湖人称菠萝包4 小时前
【Qt】《Qt 5.9 C++开发指南》笔记-Chapter10-Data Visualization
笔记·qt·qt5
quantdash_cc5 小时前
量化策略为什么需要实时行情数据?从信号产生到交易决策的时间差说起
开发语言·python·数据分析·量化交易·股票数据·quantdash