QT TabWidget设置选项卡

QT TabWidget设置选项卡

实现效果

在选中右侧指定标签时,该标签背景显示浅色背景图片,字体图片为深色;其他标签背景为灰色背景图片,字体图片也显示深灰色。
在这里插入图片描述

标签的添加与删除

1、添加标签
在这里插入图片描述
2、删除标签
在这里插入图片描述

移动标签

通过属性栏设置标签的位置
###

设置标签的大小与不同状态的背景

修改样式表设置标签的长宽,设置标签在被选中与未选中时显示不同的背景
在这里插入图片描述
代码片:

QTabBar::tab{width:90}
QTabBar::tab{height:142}

QTabBar::tab:selected{background-image:url(/home/jenny/res/MainTabSel.png)}
QTabBar::tab:!selected{background-image: url(/home/jenny/res/MainTabUnsel.png)}

设置标签图片

使用addPixmap()函数添加图片。
此时如图所示显示一个小图标,需要将图标放大。
在这里插入图片描述

设置图标大小

使用setIconSize()函数设置图片的大小。
注意:需要通过QSize设置长宽
此时如图所示显示的图标变为指定大小的图片,但是图片为横向,需要将图片旋转。
在这里插入图片描述
代码片:

    QSize  size; 
    size.setHeight(142);
    size.setWidth(90);
    ui->tabWidget->setIconSize(size);

设置图片旋转

使用QMatrix类中的rotate()函数旋转图片。
此时如图所示显示一个小图标,需要将图标放大。
在这里插入图片描述
代码片:

   QMatrix matrix;
   matrix.rotate(270);      //旋转270度

MainWindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>

namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
private slots:
    void on_tabWidget_tabBarClicked(int index);
private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

MainWindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QTabBar"
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->tabWidget->setCurrentIndex(0);//设置选中第一个标签
    QIcon icon0A,icon1B,icon2B,icon3B;
    QSize  size;
    QMatrix matrix;
    size.setHeight(142);
    size.setWidth(90);
    matrix.rotate(270);      //旋转270度
    ui->tabWidget->setIconSize(size);

    icon0A.addPixmap(QPixmap("/home/jenny/res/MainTab0A.png").transformed(matrix,Qt::SmoothTransformation));//改变-平滑变换
    ui->tabWidget->setTabIcon(0,icon0A);

    icon1B.addPixmap(QPixmap("/home/jenny/res/MainTab1B.png").transformed(matrix,Qt::SmoothTransformation));
    ui->tabWidget->setTabIcon(1,icon1B);
    icon2B.addPixmap(QPixmap("/home/jenny/res/MainTab2B.png").transformed(matrix,Qt::SmoothTransformation));
    ui->tabWidget->setTabIcon(2,icon2B);
    icon3B.addPixmap(QPixmap("/home/jenny/res/MainTab3B.png").transformed(matrix,Qt::SmoothTransformation));
    ui->tabWidget->setTabIcon(3,icon3B);

    ui->tabWidget->setFocusPolicy(Qt::NoFocus);//实现点击无焦点,去除虚线框

}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_tabWidget_tabBarClicked(int index)
{
    QIcon icon0A,icon1A,icon2A,icon3A;
    QIcon icon0B,icon1B,icon2B,icon3B;
    QSize  size;
    QMatrix matrix;
    size.setHeight(150);
    size.setWidth(100);
    matrix.rotate(270);
    ui->tabWidget->setIconSize(size);
    if(index==0)
    {
        icon0A.addPixmap(QPixmap("/home/jenny/res/MainTab0A.png").transformed(matrix,Qt::SmoothTransformation));
        ui->tabWidget->setTabIcon(0,icon0A);

        icon1B.addPixmap(QPixmap("/home/jenny/res/MainTab1B.png").transformed(matrix,Qt::SmoothTransformation));
        ui->tabWidget->setTabIcon(1,icon1B);
        icon2B.addPixmap(QPixmap("/home/jenny/res/MainTab2B.png").transformed(matrix,Qt::SmoothTransformation));
        ui->tabWidget->setTabIcon(2,icon2B);
        icon3B.addPixmap(QPixmap("/home/jenny/res/MainTab3B.png").transformed(matrix,Qt::SmoothTransformation));
        ui->tabWidget->setTabIcon(3,icon3B);
    }
    if(index==1)
    {
        icon1A.addPixmap(QPixmap("/home/jenny/res/MainTab1A.png").transformed(matrix,Qt::SmoothTransformation));
        ui->tabWidget->setTabIcon(1,icon1A);

        icon0B.addPixmap(QPixmap("/home/jenny/res/MainTab0B.png").transformed(matrix,Qt::SmoothTransformation));
        ui->tabWidget->setTabIcon(0,icon0B);
        icon2B.addPixmap(QPixmap("/home/jenny/res/MainTab2B.png").transformed(matrix,Qt::SmoothTransformation));
        ui->tabWidget->setTabIcon(2,icon2B);
        icon3B.addPixmap(QPixmap("/home/jenny/res/MainTab3B.png").transformed(matrix,Qt::SmoothTransformation));
        ui->tabWidget->setTabIcon(3,icon3B);
    }
    if(index==2)
    {
        icon2A.addPixmap(QPixmap("/home/jenny/res/MainTab2A.png").transformed(matrix,Qt::SmoothTransformation));
        ui->tabWidget->setTabIcon(2,icon2A);

        icon0B.addPixmap(QPixmap("/home/jenny/res/MainTab0B.png").transformed(matrix,Qt::SmoothTransformation));
        ui->tabWidget->setTabIcon(0,icon0B);
        icon1B.addPixmap(QPixmap("/home/jenny/res/MainTab1B.png").transformed(matrix,Qt::SmoothTransformation));
        ui->tabWidget->setTabIcon(1,icon1B);
        icon3B.addPixmap(QPixmap("/home/jenny/res/MainTab3B.png").transformed(matrix,Qt::SmoothTransformation));
        ui->tabWidget->setTabIcon(3,icon3B);
    }
    if(index==3)
    {
        icon3A.addPixmap(QPixmap("/home/jenny/res/MainTab3A.png").transformed(matrix,Qt::SmoothTransformation));
        ui->tabWidget->setTabIcon(3,icon3A);

        icon0B.addPixmap(QPixmap("/home/jenny/res/MainTab0B.png").transformed(matrix,Qt::SmoothTransformation));
        ui->tabWidget->setTabIcon(0,icon0B);
        icon1B.addPixmap(QPixmap("/home/jenny/res/MainTab1B.png").transformed(matrix,Qt::SmoothTransformation));
        ui->tabWidget->setTabIcon(1,icon1B);
        icon2B.addPixmap(QPixmap("/home/jenny/res/MainTab2B.png").transformed(matrix,Qt::SmoothTransformation));
        ui->tabWidget->setTabIcon(2,icon2B);
    }
}

  • 8
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值