跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • QTabWidget 如何把标签页放在左侧
未分類
3 11 月 2020

QTabWidget 如何把标签页放在左侧

QTabWidget 如何把标签页放在左侧

資深大佬 : neighbads 5

搜索了几个代码实现,显示效果都不是很理想。

  • windows 4k Height (30)

QTabWidget 如何把标签页放在左侧

可以看到 背景上有个不知道什么字符

  • windows 4k Height (35)

QTabWidget 如何把标签页放在左侧

背景上的字符变小

  • mac 4k Height (35)

QTabWidget 如何把标签页放在左侧

MAC 里简直不能看

代码,网上搜到的基本都是这样修改的:

qtabwidgetex.cpp

#include "qtabwidgetex.h"  QTabBarStyle::QTabBarStyle(QStyle *parent) : QProxyStyle(parent) {  }  void QTabBarStyle::drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = nullptr) const {     if(element == CE_TabBarTabLabel)     {         const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(option);         if(tab)         {             QStyleOptionTab opt(*tab);             opt.shape = QTabBar::RoundedNorth;             //opt.icon = QIcon(":/res/11.ico");             //opt.text = "Hello";             //opt.palette.setCurrentColorGroup(QPalette::Disabled);             //opt.state |= QStyle::State_Sunken;             QProxyStyle::drawControl(element, &opt, painter, widget);         }     }      QProxyStyle::drawControl(element, option, painter, widget); }  QSize QTabBarStyle::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.setWidth(120);         s.setHeight(35);     }     return s; }   QTabWidgetEx::QTabWidgetEx(QWidget *parent) : QTabWidget(parent) {     m_tabbar = new QTabBar(this);     m_tabbar->setMovable(false);     m_tabbar->setStyle(new QTabBarStyle());     this->setTabBar(m_tabbar);     this->setTabPosition(QTabWidget::West); }  QTabWidgetEx::~QTabWidgetEx() {  }  

qtabwidgetex.h

#ifndef QTABWIDGETEX_H #define QTABWIDGETEX_H  #include <QWidget> #include <QTabWidget> #include <QTableWidgetItem> #include <QTabBar> #include <QProxyStyle> #include <QPainter>   class QTabBarStyle : public QProxyStyle {     Q_OBJECT public:     explicit QTabBarStyle(QStyle *style = nullptr);      void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const override;     QSize sizeFromContents(ContentsType type, const QStyleOption *option, const QSize &size, const QWidget *widget) const override; };  class QTabWidgetEx : public QTabWidget {     Q_OBJECT public:     explicit QTabWidgetEx(QWidget *parent = nullptr);     ~QTabWidgetEx();  signals:  public slots:  private:     QTabBar *m_tabbar; };  #endif // QTABWIDGETEX_H  

完整工程连接: https://cowtransfer.com/s/5add1fda5fe44b

大佬有話說 (0)

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具