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;   /*背景设置为浅灰色以区别*/
}
相关推荐
Li_Zhi_Yao5 小时前
linux下qt快速搭建环境
linux·运维·qt
晔子yy5 小时前
聊聊Java的内存模型
java·开发语言
难得的我们5 小时前
基于C++的区块链实现
开发语言·c++·算法
Acrelhuang5 小时前
工厂配电升级优选 安科瑞智能断路器安全提效又节能-安科瑞黄安南
大数据·运维·开发语言·人工智能·物联网
Go_Zezhou5 小时前
render快速部署网站和常见问题解决
运维·服务器·开发语言·python·github·状态模式
从此不归路5 小时前
Qt5 进阶【12】JSON/XML 数据协议处理:与后端/配置文件的对接
xml·开发语言·c++·qt·json
艾莉丝努力练剑5 小时前
【QT】信号与槽
linux·开发语言·c++·人工智能·windows·qt·qt5
轩情吖5 小时前
Qt的窗口(二)
开发语言·c++·qt·qdialog·对话框·桌面级开发
雨季6665 小时前
Flutter 三端应用实战:OpenHarmony “极简安全文本对齐调节器”
开发语言·前端·javascript·安全·flutter·交互