如何在 Qslider 的自定义位置打勾?

use*_*412 3 c++ user-interface qt qslider

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

Ric*_*ith 5

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

从文档:

刻度间隔:整数

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

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

如果您想要以不规则的间隔标记,您将需要覆盖paint()参见示例)。

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

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);
}
Run Code Online (Sandbox Code Playgroud)

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