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;   /*背景设置为浅灰色以区别*/
}
相关推荐
用户805533698031 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
xcyxiner1 天前
DicomViewer (vcpkg Windows和ubuntu编译)7
qt
Quz6 天前
QML Hello World 入门示例
qt
xcyxiner9 天前
DicomViewer (dcmtk读取dcm文件)5
qt
xcyxiner10 天前
DicomViewer (后台线程处理文件)4
qt
xcyxiner10 天前
DicomViewer (添加模型类)3
qt
xcyxiner11 天前
DicomViewer (目录调整) 2
qt
xcyxiner11 天前
dcmtk vtk vtk-dicom(gdcm) 编译(debug) v2
qt
LDR00613 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术13 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript