Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt GUI _ очищаемый SpinBox

Автор: Sokoloff 22.5.2009, 16:46

Потребовалось мне написать на питоне SpinBox для ввода года, но нужна возмозность не указывать ничего, т.е. если человек сотрет весь текст, то поле редактирования в spinbox-е должно оставаться пустым. Вроде все работает, но хочется проконсультироваться, правильно я сделал, или есть более прямые пути?

class YearSpinBox(QtGui.QSpinBox):

    def __init__(self, parent=None):
        QtGui.QSpinBox.__init__(self, parent)
        
    def textFromValue(self, value):
        if (value == self.minimum()):
          return QtCore.QString("")
        else:  
          return QtGui.QSpinBox.textFromValue(self, value)
      
    def validate(self, text, pos):
        if (text == ''):
            self.setValue(self.minimum())
            return (QtGui.QValidator.Acceptable, pos)
            
        return QtGui.QSpinBox.validate(self, text, pos)

Автор: SABROG 23.5.2009, 16:58

Я не нашел. Имхо прямее некуда, даже Assistant предлагает такой вариант. Можно конечно поизвращаться с valueChanged + specialTextValue, а там вместо пустой строки ставить что-то типа "No value".

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)