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);
}
}