马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- tabWidget->setStyleSheet("QTabBar::tab { min-width: 100px; } QTabBar::tab:down { spacing: 2px; } QTabBar::tab:down { transform: rotate(270deg); }");
复制代码
写QTabBar。
- painter.translate(c);
- painter.rotate(90);//西方向
- painter.translate(-c);
复制代码 简单分析了代码,按理来说,应该是有用的。测试结果证实是无效的。
头文件
- #include <QObject>
- #include <QProxyStyle>
- //自定义tabbar的样式
- class WyTabStyle : public QProxyStyle
- {
- Q_OBJECT
- public:
- WyTabStyle();
- 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;
- };
复制代码 实现。详细效果要自己调整一下。
- #include <QStylePainter>
- #include <QStyleOptionTab>
- #include <QTabWidget>
- #include "WyTabBar.h"
- WyTabStyle::WyTabStyle()
- {
- }
- QSize WyTabStyle::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.transposed();
- s.rwidth()=100;
- s.rheight()=50;
- }
- return s;
- }
- void WyTabStyle::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;
- if(tab->state&QStyle::State_Selected){
- painter->save();
- painter->setPen(0x89cfff);
- painter->setBrush(QBrush(0x89cfff));
- painter->drawRect(allRect.adjusted(6,6,-6,-6));
- painter->restore();
- }
- QTextOption option;
- option.setAlignment(Qt::AlignCenter);
- if(tab->state&QStyle::State_Selected){
- painter->setPen(0xf8fcff);
- }else{
- painter->setPen(0x000001);
- }
- painter->drawText(allRect,tab->text,option);
- return ;
- }
- }
- if(element==CE_TabBarTab){
- QProxyStyle::drawControl(element,option,painter,widget);
- }
- }
复制代码
- this->tabBar()->setStyle(new WyTabStyle());
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |