QTabWidget设置为垂直方向时 实现文本内容为水平方向

来源:互联网 发布:excel如何制作数据库 编辑:程序博客网 时间:2024/06/05 04:57

利用 QProxyStyle设置QtabWidget的样式。


1.h文件

#ifndef TABWIDGET_H
#define TABWIDGET_H


#include <QTabWidget>
#include <QTabBar>
#include <QProxyStyle>
#include <QPainter>
#include <QStyleOption>


class CustomTabStyle : public QProxyStyle
{
public:
QSize sizeFromContents(ContentsType type, const QStyleOption *option,
const QSize &size, const QWidget *widget) const
{
QSize s = QProxyStyle::sizeFromContents(type, option, size, widget);
if (type == QStyle::CT_TabBarTab)
{   
s.transpose();
   s.rwidth()=70;
   s.rheight()=70;
}
return s;
}


void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const
{
if (element == CE_TabBarTabLabel)
{
if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(option))
{
QStyleOptionTab opt(*tab);
opt.shape = QTabBar::RoundedNorth;
//opt.text = tr("Hello");
//QIcon icon(":/Resources/icon2.ico");
//opt.icon = icon; 
opt.palette.setCurrentColorGroup(QPalette::Disabled);
opt.state |= QStyle::State_Sunken;
QProxyStyle::drawControl(element, &opt, painter, widget);
return;
}
}


QProxyStyle::drawControl(element, option, painter, widget);
}
};


class tabwidget : public QTabWidget
{
Q_OBJECT


public:
tabwidget(QObject *parent = NULL);
~tabwidget();


private:

};


#endif // TABWIDGET_H


2.cpp文件

#include "tabwidget.h"


tabwidget::tabwidget(QObject *parent)
{

QTabBar *bar = new QTabBar;
bar->setStyle(new CustomTabStyle);
setTabBar(bar);


QWidget *w = new QWidget;
bar->addTab(QIcon(""),"123");
w = new QWidget;
bar->addTab(QIcon(""),"9");




}


tabwidget::~tabwidget()
{


}


3.效果如下



0 0
原创粉丝点击