【问题标题】:changing size of Widget from QStyle从 QStyle 改变 Widget 的大小
【发布时间】:2011-07-08 17:30:28
【问题描述】:

我正在写 QStyle 在这里我将 QProgressBar 更改为 Slim 单行,没有文本。所以高度也会减少到5px。但是小部件宽度将由布局决定。我应该如何在 My Style 的 drawControl 中更改小部件高度?

【问题讨论】:

  • 我认为简单地调用 setMaximumWidth(5pixels) 和 setMinimumWidth(5pixels) 会更容易,无论布局是什么,它们都会将宽度限制为 5 个像素。

标签: qt qt4.7


【解决方案1】:

我实际上从未写过QStyle,但如果您要调整drawControl 中的任何内容,我会认为这很奇怪。通过快速查看文档,我可能错了,这似乎表明您将覆盖subElementRect 并根据当前宽度和您的首选高度返回一个矩形。我假设这将被布局活动调用,并在drawControl 被调用时被整理出来。

【讨论】:

  • 我已经尝试了所有 3 个与 ProgressBar 相关的子元素案例 SE_ProgressBarGrooveSE_ProgressBarContentsSE_ProgressBarLabel 我正在返回一个高度为 5px 且宽度相同的矩形。这是行不通的。没有变化,还是一样。
  • 抱歉没用。希望会出现更多建议。
  • 那么在进度条小部件上设置最大高度 5 不起作用?
  • 我已经尝试覆盖 polish(QWidget* widget)widget->setGeometry(rect) 也没有工作
【解决方案2】:

您需要固定小部件的高度吗?或者只是绘制的高度永远不会超过 5 像素?首先,在抛光函数上设置高度和调整大小策略。第二,覆盖 QStyle 中的绘图以仅使用 5 个像素。做图的函数一般取rects;如果您正确覆盖了适当的函数,则可以使用修改后的 rect 调用基类的绘图。不幸的是,我已经有好几年没有做任何 QStyle 工作了,所以我不确定这些函数到底是什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    • 1970-01-01
    相关资源
    最近更新 更多