您现在的位置是:首页 > 技术文章网站首页技术文章
[Qt]Tab Widget 横向字体实现
Qt中的Tab Widget,tabPosition 改为 West 后 字体竖着显示改为横着显示方法
UI布局Demo:
样式文件如下:
Tabstyle.h
#ifndef CUSTOMTABSTYLE_H
#define CUSTOMTABSTYLE_H
#include <QPainter>
#include <QProxyStyle>
#include <QStyleOptionTab>
class CustomTabStyle : public QProxyStyle
{
public:
CustomTabStyle();
QSize sizeFromContents(ContentsType type,
const QStyleOption *option,
const QSize &size,
const QWidget *widget) const;
void drawControl(ControlElement element,
const QStyleOption *option,
QPainter *painter,
const QWidget *widget) const;
};
#endif // CUSTOMTABSTYLE_H
Tabstyle.cpp
#include "Tabstyle.h"
CustomTabStyle::CustomTabStyle()
{
}
QSize CustomTabStyle::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() = 105;
s.rheight() = 40;
}
return s;
}
void CustomTabStyle::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))
{
QTextOption option;
option.setAlignment(Qt::AlignCenter);
QPen pen(Qt::black, 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
painter->setPen(pen);
painter->drawText(tab->rect, tab->text, option);
return;
}
}
QProxyStyle::drawControl(element, option, painter, widget);
}
调用Tabstyle.h头文件到 QTabWidget 所在cpp文件:
ui->confTabWidget->tabBar()->setStyle(new CustomTabStyle); //加载样式 confTabWidget 为控件名称
效果如下:
下一篇:[Qt]自定义窗体
相关文章
文章评论 (0)