首页 > 技术文章 > QT -- QTabWidget改变选项卡的位置

zzzsj 2021-07-27 16:16 原文

QTabWidget选项卡的位置默认是上面(North)。如下图

在这里插入图片描述

当我们想改变选项卡的为外观和位置是可以调用一下两个函数 setTabShape() 和 setTabPosition()。

选项卡外观函数:

QTabWidget::setTabShape(QTabWidget::Rounded); //默认(圆形)
QTabWidget::setTabShape(QTabWidget::Triangular); //三角形

选项卡位置函数:

QTabWidget::setTabPosition(QTabWidget::North); //默认为上面
QTabWidget::setTabPosition(QTabWidget::South); //下面(默认为上面)
QTabWidget::setTabPosition(QTabWidget::West); //左侧(默认为上面)
QTabWidget::setTabPosition(QTabWidget::East); //右侧(默认为上面)

运行效果:

选项卡在下面
选项卡在左边
选项卡在右边

代码:

#include "qttests.h"
#include <QtWidgets/QApplication>
#include <QtWidgets/QtWidgets>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget w;

    QWidget *pw = new QWidget();  
    QWidget *pw1 = new QWidget();
    QWidget *pw2 = new QWidget();

    QRadioButton *pr,*pr1,*pr2,*pr3,*pr4,*pr5;
    
    pr = new QRadioButton("AAA"); 
    pr1 = new QRadioButton("BBB");
    pr2 = new QRadioButton("CCC"); 
    pr3 = new QRadioButton("DDD");
    pr4 = new QRadioButton("EEE"); 
    pr5 = new QRadioButton("FFF");

    QVBoxLayout *pv = new QVBoxLayout;
    QVBoxLayout *pv1 = new QVBoxLayout;
    QVBoxLayout *pv2 = new QVBoxLayout;

    pv->addWidget(pr);
    pv->addWidget(pr1);
    pw->setLayout(pv);

    pv1->addWidget(pr2);
    pv1->addWidget(pr3);
    pw1->setLayout(pv1);

    pv2->addWidget(pr4);
    pv2->addWidget(pr5);
    pw2->setLayout(pv2);

    QtTests *pt = new QtTests(&w);
    pt->addTab(pw, "AA");
    pt->addTab(pw1, "BB");
    pt->addTab(pw2, "CC");
    
    pt->move(22, 55);
    pt->resize(222, 222);

    //pt->setTabPosition(QTabWidget::South);        //下面(默认为上面)
    //pt->setTabPosition(QTabWidget::West);        //左侧(默认为上面)
    pt->setTabPosition(QTabWidget::East);        //右侧(默认为上面)

    pt->setTabShape(QTabWidget::Triangular);    //表头为三角形外观(默认为圆形)
    //pt->setTabShape(QTabWidget::Rounded);

    cout << pt->indexOf(pw1) << endl;
    cout << pt->indexOf(pr) << endl;

    w.resize(300, 300);
    w.show();

    return a.exec();
}

 

推荐阅读