QTabWidget 竖向 QTabBar横向
来源:互联网 发布:中兴手机刷机软件 编辑:程序博客网 时间:2024/06/05 13:25
参考文件引用自http://blog.csdn.net/skyztttt/article/details/52448992
你的评论,是我的动力
/***********************customTabStyle.h*******************************/
#ifndef CUSTOMTABSTYLE_H
#define CUSTOMTABSTYLE_H
#include <QPainter>
#include <QProxyStyle>
#include <QStyleOptionTab>
#include <QRect>
#include <QSize>
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<const QStyleOptionTab *>(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);tab->tabBar()->setStyle(new CustomTabStyle);//注意setCentralWidget(tab);
阅读全文
1 0
- QTabWidget 竖向 QTabBar横向
- QTabWidget和QTabBar的外观定制
- QTabBar 和 QTabWidget部件 页签
- QTabWidget和QTabBar的外观定制
- 横向菜单和竖向菜单~
- android 横向,竖向滚动Gridveiw
- easyUI 横向竖向分割线
- 竖向二级菜单实例+横向菜单/Table
- iOS 竖向tableView上添加横向tableView
- 可以横向滑动竖向滑动的listview
- 横向竖向各种速度的跑马灯
- iOS UIScrollview 横向滚动 以及竖向滚动
- Android 横向竖向的抽屉菜单
- 自定义竖向SeekBar ,横向SeekBar 样式
- RecyclerView横向和竖向滑动冲突
- RecyclerView横向和竖向滑动冲突
- 竖向ScrollView嵌套横向滑动布局冲突
- 把表的竖向列变为横向一字段值(或 竖向变横向)
- android java项目到kotlin的转换
- 短信相关的AT指令以及信令
- 1014. 福尔摩斯的约会 (20)
- VTK读取图片,QT中显示
- NIO简介
- QTabWidget 竖向 QTabBar横向
- jQuery对象和DOM对象的相互转换
- 用CSS模拟单选框
- FBIOPAN_DISPLAY和MSMFB_DISPLAY_COMMIT刷屏流程
- Android6.0 显示系统(二) SurfaceFlinger创建Surface
- 纪念品分组
- PHP面向对象6-常量,Static(静态)关键字
- 打造自己的JavaScript武器库
- 完全数