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;   /*背景设置为浅灰色以区别*/
}
相关推荐
free-elcmacom23 分钟前
C++ 默认参数详解:用法、规则与避坑指南
开发语言·c++
码云数智-大飞30 分钟前
分布式事务解决方案全景指南:2PC、TCC、SAGA 与 Seata 实战
开发语言
娇娇yyyyyy34 分钟前
QT编程(10): QLineEdit
开发语言·qt
Albert Edison39 分钟前
【ProtoBuf 语法详解】Any 类型
服务器·开发语言·c++·protobuf
喵叔哟1 小时前
5. 【Blazor全栈开发实战指南】--Blazor组件基础
开发语言·javascript·ecmascript
海奥华21 小时前
Rust初步学习
开发语言·学习·rust
卢锡荣1 小时前
LDR6021Q 车规级 Type‑C PD 控制芯片:一芯赋能,边充边传,稳驭全场景
c语言·开发语言·ios·计算机外设·电脑
、BeYourself2 小时前
Scala 基础语法
开发语言·scala
AMoon丶2 小时前
C++模版-函数模版,类模版基础
java·linux·c语言·开发语言·jvm·c++·算法
SugarFreeOixi2 小时前
Matlab多个图窗重叠问题解决,平铺函数TileFigs
开发语言·matlab