首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >qt qtabbar自定义qstyle

qt qtabbar自定义qstyle
EN

Stack Overflow用户
提问于 2015-04-24 06:53:57
回答 1查看 805关注 0票数 2

我使用以下选项卡样式来水平绘制选项卡栏文本的东侧选项卡位置。只要我没有为QTabBar::tab设置任何边距,文本就可以绘制。在这种情况下,文本方向保持垂直,具有奇怪的偏移量。

代码语言:javascript
复制
class TabStyle : public QProxyStyle {
public:
  explicit TabStyle(Qt::Orientation orientation, QStyle *baseStyle = 0)
      : QProxyStyle(baseStyle), mOrientation(orientation) {}
  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)) {
        QStyleOptionTab opt(*tab);
        opt.shape = QTabBar::RoundedNorth;
        return QProxyStyle::drawControl(element, &opt, painter, widget);
      }
    }
    QProxyStyle::drawControl(element, option, painter, widget);
  }

private:
  const Qt::Orientation mOrientation;
};

class TabWidget : public QTabWidget {
public:
  explicit TabWidget(QWidget *parent = 0,
                     Qt::Orientation orientation = Qt::Horizontal)
      : QTabWidget(parent) {
    QTabBar *tabBar = new QTabBar;
    tabBar->setStyle(new TabStyle(orientation));
    setTabBar(tabBar);
  }
};
EN

回答 1

Stack Overflow用户

发布于 2015-04-25 05:10:49

你为什么不使用Qt样式表呢?在设计器中,你可以动态地检查它,并且你不需要为此编写任何代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29835759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档