2011-01-28 3 views
1

Я хотел бы указать шаги, которые может скользить QSlider, как это возможно для QSpinBox, используя setSingleStep. Я попытался использовать setSingleStep QAbstractSlider, но это, похоже, не имеет никакого эффекта.QSlider stepping?

Любые идеи?

ответ

5

Попробуйте установить tickInterval

EDIT

Извините за tickInterval, не совсем thinked об этом, однако у меня есть этот рабочий код, и он делает то, что вы хотите использовать setSingleStep

import sys 
from PyQt4.QtGui import QApplication, QSlider, QMainWindow 

class Window(QMainWindow): 
    def __init__(self, parent = None): 
     super(Window, self).__init__(parent) 

     slider = QSlider() 
     slider.setMinimum(0) 
     slider.setMaximum(100) 

     slider.setTickInterval(20) 
     slider.setSingleStep(20) 


     self.setCentralWidget(slider) 


if __name__ == "__main__": 
    app = QApplication(sys.argv) 

    window = Window() 
    window.show() 

    sys.exit(app.exec_()) 
+0

Это прекрасно работает до сих пор, спасибо! Но пользователь все еще способен отслеживать слайдер до значений между этапами. Как это можно предотвратить? –

+0

Я не думаю, что это гораздо больше, чем это, может быть, если вы можете дать некоторый фон, я могу предоставить альтернативный подход. – armonge

+1

Предположим, что есть QSlider с минимальным значением 0 и максимальным значением 100. Теперь пользователь должен иметь возможность выбирать 0, 10, 20, .., 90, 100, но не 1,2,3, ... 21,22,23, ... 91,92,93 ..., 99, перемещая раздвижная ручка. –