首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QProgressBar与StyleSheet

QProgressBar与StyleSheet
EN

Stack Overflow用户
提问于 2014-07-07 14:36:26
回答 2查看 987关注 0票数 0

我想有一个垂直的进步条与垂直(自上而下)文本在里面。我想知道是否以及如何通过样式表来实现这一点。我不能改变整个应用程序的风格,也不能为小部件完全改变它(没有“应用塑料风格解决方案可用”)。有人能给我举一些例子吗?如果你知道实现这个目标的其他方法,也会有帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-08 08:16:40

提出的答案太复杂了。它可以用更简单的方式(更少的代码)来完成。

首先,您应该子类QProxyStyle。这应该大致类似于这样做(覆盖drawControl):

代码语言:javascript
复制
class MyProxyStyle : public QProxyStyle
{
  public:
    void QStyle::drawControl(ControlElement element, const QStyleOption * option, QPainter * painter, const QWidget * widget = 0) const
    {
        if (element == CE_ProgressBarLabel) {
            // create coppy of style option:
            QStyleOptionProgressBar op(*static_cast<QStyleOptionProgressBar*>(option));

            // prepare style option for rotation
            op.rect = QTransform().rotate(-90).mapRect(op.rect);
            // optional: op.orientation = (op.orientation==Qt::Horizontal)?Qt::Vertical:Qt::Horizontal;

            painter->rotate(90);  // rotate painter 
            QProxyStyle::drawControl(element, &op, painter, widget);
            painter->rotate(-90); // restore painter state - its a must

            return;
        }
        QProxyStyle::drawControl(element, option, painter, widget);
    }
};

这可能是我搞砸了角度,但一般的概念应该是明确的。

请注意,这是一个更好的方法,因为:

  • 代码很简单
  • 你不打破风格,如果风格将被改变,所有应该看一个填充右(你没有使用硬编码的标签)。
票数 1
EN

Stack Overflow用户

发布于 2014-07-07 14:48:56

我认为最好的方法就是子类QProgressBar,而不是使用样式表。

在QScrollbar中有一个类似的例子,希望它能有所帮助;)

在滚动条上绘制文本

如果您只想将样式表应用于一个组件,则必须编写如下内容:

代码语言:javascript
复制
widgetType#widgetName
{
    ...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24613188

复制
相关文章

相似问题

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