当前位置:   article > 正文

QTabWidget设置为垂直方向时 实现文本内容为水平方向_qt tabwidget标签竖直,文字水平

qt tabwidget标签竖直,文字水平

利用 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.效果如下



声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/613526
推荐阅读
相关标签
  

闽ICP备14008679号