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

时间:2015-05-26 20:54:33

标签: c++ qt user-interface qslider

您好我尝试实现自定义QSlider,但是ticks总是在intervalls中,我需要将它们放在特定的地方。我不知道如何继续。

1 个答案:

答案 0 :(得分:4)

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

来自文档:

  

tickInterval:int

     

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

     

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

如果您希望以非常规间隔标记,则需要覆盖paint()see example)。

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

void MyWidget::paintEvent(QPaintEvent *)
{
    QSlider::paint();  // 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。祝你好运!