Установить строку в QDoubleSpinBox

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

3

Решение

Ты можешь попробовать 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, значением spinbox должна быть строка «unset».

9

Другие решения

Есть два решения для достижения того, что вы хотите.

Как pezy в другом ответе говорит, используя setSpecialValueText где текст отображается, когда текущее значение () == минимум () спинбокс

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

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

Посмотрите здесь, пытаясь что-то подобное QSpinBox введите NaN в качестве допустимого значения.

5

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

-1
По вопросам рекламы [email protected]