qt tabwidget使用_word横向表格变竖向

qt tabwidget使用_word横向表格变竖向参考文件引用自 http blog csdn net skyztttt article details 你的评论 是我的动力 正常设置 QTabWidget setTabPositi QTabWidget West 设置完竖向之后会发现 QTabBar 仍然是竖向的 所以我们需要重绘一下 Qtabbar 下面是重绘代码

参考文件引用自http://blog.csdn.net/skyztttt/article/details/52448992
你的评论,是我的动力

正常设置QTabWidget->setTabPosition(QTabWidget::West);设置完竖向之后会发现QTabBar仍然是竖向的
所以我们需要重绘一下Qtabbar 下面是重绘代码
/******************customTabStyle.h**************************/

#ifndef CUSTOMTABSTYLE_H
#define CUSTOMTABSTYLE_H
#include
#include
#include
#include
#include
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() = 150; // 设置每个tabBar中item的大小
s.rheight() = 50;
}
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(option)) {
QRect allRect = tab->rect;
allRect.setWidth(allRect.width() - 5);
allRect.setHeight(allRect.height() - 2);
//选中状态
if (tab->state & QStyle::State_Selected) {
//save用以保护坐标,restore用来退出状态
painter->save();
painter->setBrush(QBrush(0x004ea1));
//矩形
//painter->drawRect(allRect.adjusted(0, 0, 0, 0));
//带有弧线矩形
painter->drawRoundedRect(tab->rect, 8, 8);
painter->restore();
}
//hover状态
else if(tab->state & QStyle::State_MouseOver){
painter->save();
painter->setBrush(QBrush(0x004ea1));
painter->drawRoundedRect(allRect, 8, 8);
painter->restore();
}
else{
painter->save();
painter->setBrush(QBrush(0x78aadc));
painter->drawRoundedRect(allRect, 8, 8);
painter->restore();
}
QTextOption option;
option.setAlignment(Qt::AlignCenter);
painter->setFont(QFont("楷体", 18, QFont::Bold));
painter->setPen(0xffffff);
painter->drawText(allRect, tab->text, option);
return;
}
}
if (element == CE_TabBarTab) {
QProxyStyle::drawControl(element, option, painter, widget);
}
}
};

endif // CUSTOMTABSTYLE_H

/****************************引用方法*****************************/

    QTabWidget* tab = new QTabWidget();
QPushButton* closeButton = new QPushButton;
closeButton->setObjectName("closeButton");
QPushButton* button = new QPushButton("button");
tab->addTab(closeButton, "关闭");
tab->addTab(button, "按钮");
tab->setTabPosition(QTabWidget::West);//QTabWidget竖向
tab->tabBar()->setStyle(new CustomTabStyle);//注意,设置上述代码风格 就可以实现QTabBar横向
setCentralWidget(tab);
编程小号
上一篇 2025-01-30 07:30
下一篇 2025-01-26 08:40

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/114734.html