Как поставить галочки в пользовательских местах на Qslider?

Привет, я пытался реализовать пользовательский QSlider, но галочки всегда в интервалах, и мне нужно разместить их в определенных местах. Я понятия не имею, как поступить.

1 ответ

Если вы просто хотите изменить интервалы между отметками, вы можете использовать QSlider: setTickInterval ().

Из документации:

tickInterval: int

Это свойство содержит интервал между отметками.

Это интервал значений, а не интервал в пикселях. Если это 0, ползунок будет выбирать между singleStep() и pageStep(). Значением по умолчанию является 0.

Если вы хотите, чтобы отметки появлялись нерегулярно, вам нужно переопределить paint() ( см. пример).

Это не проверенный пример кода:

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);
}

Это, вероятно, содержит несколько ошибок, но должно хорошо иллюстрировать идею. Вы также можете увидеть этот вопрос. Удачи!

Другие вопросы по тегам