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;   /*背景设置为浅灰色以区别*/
}
相关推荐
wuyk55535 分钟前
第2章:六步换相原理全解+STM32工程实战
c语言·开发语言·stm32·单片机·嵌入式硬件
hey_sml42 分钟前
JAVA每日一学---CompletableFuture中thenApply与thenCompose区别详解
java·开发语言
萧瑟余晖2 小时前
Java深入解析篇十七之SpringCloud
java·开发语言
ttod_qzstudio3 小时前
Java 常用语法极简通关(五):类与对象——字段、方法、构造器、this 与 static
java·开发语言·python
我是小灰灰吖4 小时前
QT在线安装器使用指南:从下载到配置完整教程
linux·qt·ubuntu
萧瑟余晖4 小时前
Java深入解析篇十七之Spring Security
java·开发语言·spring
C++ 老炮儿的技术栈6 小时前
从 Qt Designer 属性编辑器的层级可以看到继承链
c语言·数据库·c++·qt·sqlite·visual studio
二十雨辰7 小时前
[Java]-Spring面试题
java·开发语言
_oP_i7 小时前
python 后缀 mjs文件
开发语言·python
萧瑟余晖7 小时前
Java深入解析篇二十二之虚拟线程
java·开发语言