如何在 Qslider 上的自定义位置放置刻度?

Posted

技术标签:

【中文标题】如何在 Qslider 上的自定义位置放置刻度?【英文标题】:How to put ticks at custom places on a Qslider? 【发布时间】:2015-05-26 20:54:33 【问题描述】:

您好,我尝试实现自定义 QSlider,但刻度总是在间隔中,我需要将它们放在特定位置。我不知道如何继续。

【问题讨论】:

【参考方案1】:

如果您只想更改刻度线间隔,可以使用QSlider:setTickInterval()。

来自文档:

tickInterval : 整数

此属性保存刻度线之间的间隔。

这是一个值区间,而不是像素区间。如果为 0,滑块将在 singleStep() 和 pageStep() 之间进行选择。 默认值为 0。

如果您希望以非固定间隔进行标记,则需要覆盖 paint() (see example)。

这是一些未经测试的示例代码:

void MyWidget::paintEvent(QPaintEvent* event)

    QSlider::paintEvent(event);  // paints the slider like normal

    // Add your custom tick locations
    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing);
    painter.setPen(Qt::darkGreen);
    painter.drawRect(1, 2, 6, 4);    

    painter.setPen(Qt::darkGray);
    painter.drawLine(2, 8, 6, 2);

这可能包含一些错误,但它应该很好地说明了这个想法。你也可以看到this question。祝你好运!

【讨论】:

非常感谢这对您有很大帮助

以上是关于如何在 Qslider 上的自定义位置放置刻度?的主要内容,如果未能解决你的问题,请参考以下文章

选择图像时如何在图像上显示刻度线

1.基础知识 --Matlab绘制特殊的图形

如何获取QSlider控件滑块的宽度和位置

如何获取QSlider控件滑块的宽度和位置

如何在 touchesBegan 上的自定义 UIView 中调整 UILabel 位置?

如何自动选择操作栏上的自定义视图(EditText)?