首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为特定范围的QSlider着色

为特定范围的QSlider着色
EN

Stack Overflow用户
提问于 2013-06-14 13:00:37
回答 2查看 3.2K关注 0票数 2

我有一个QSlider,让我们假设它的范围是0到100,

我需要的是颜色的QSlider凹槽的背景范围从20到80只。

下面我添加了一个示例图像。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-14 14:36:56

我建议您将QSlider子类化并重新实现paintEvent,如下所示:

代码语言:javascript
复制
void My_slider::paintEvent(QPaintEvent *ev) {
  QStyleOptionSlider opt;
  initStyleOption(&opt);

  opt.subControls = QStyle::SC_SliderGroove | QStyle::SC_SliderHandle;
  if (tickPosition() != NoTicks) {
    opt.subControls |= QStyle::SC_SliderTickmarks;
  }

  QRect groove_rect = style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderGroove, this);
  qDebug() << groove_rect;
  QSlider::paintEvent(ev);
  QRect rect(groove_rect.left() + 0.2 * groove_rect.width(), groove_rect.top(), 0.6 * groove_rect.width(), groove_rect.height());
  QPainter painter(this);
  painter.fillRect(rect, QBrush(Qt::red));
}
票数 5
EN

Stack Overflow用户

发布于 2013-06-14 16:00:30

如果你知道你的滑块的大小(以像素为单位),你也可以使用Qt style sheets to style the groove

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

https://stackoverflow.com/questions/17101378

复制
相关文章

相似问题

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