2014-11-14 5 views
3

Что касается некоторой задачи, я должен сделать следующее. У меня есть QDoubleSpinBox с положительными значениями от 0 до 1000. И каждый раз, когда пользователь пытается снизить значение spinbox, f.e. для нажатия кнопки «вниз», когда значение равно 0, значение спинбокса должно быть «неустановлено». Я попытался сделать это, чтобы очистить значение spinbox, а затем setPrefix. Но это не сработало. Любые другие решения?Установить строку в QDoubleSpinBox

+1

Hm, но QDoubleSpinBox отображает числа с плавающей запятой. Однако вы хотите установить строку? Может быть, лучше использовать этикетку вместе со спин-боксом? – vahancho

ответ

9

Вы можете попробовать specialValueText.

Это пример:

#include <QApplication> 
#include <QDoubleSpinBox> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 

    QDoubleSpinBox doubleSpinBox; 
    doubleSpinBox.setRange(0.f, 1000.f); 
    doubleSpinBox.setValue(1.f); 
    doubleSpinBox.setSpecialValueText("unset"); 

    doubleSpinBox.show(); 
    return a.exec(); 
} 

, когда значение равно 0, то значение должно быть со счётчиком строка «отключено».

+2

Хорошая функциональность: с помощью Qt довольно долгое время и никогда не думал, что что-то подобное существует. Спасибо за ваш совет! – Robert

5

Существует два решения для достижения желаемого.

Как pezy в другой ответ говорит, что с помощью setSpecialValueText, где показан текст, когда текущее значение() == минимум() из со счётчиком

или немного более мощным: подкласс QSpinBox и переопределить следующие функции:

int valueFromText(const QString &text) const; 
QString textFromValue(int value) const; 
QValidator::State validate(QString & input, int & pos) const; 

Посмотрите здесь, попробовав что-то подобное QSpinBox enter NaN as a valid value.

-1

Подкласс QSpinBox и определение вашего поведения.
Посмотрите на это example

 Смежные вопросы

  • Нет связанных вопросов^_^