Что касается какой-то задачи, я должен сделать следующее.
Предположим, у меня есть QDoubleSpinBox с положительными значениями от 0 до 1000. И каждый раз, когда пользователь пытается уменьшить значение spinbox, например чтобы нажать кнопку «вниз», когда значение равно 0, значение spinbox должно быть строкой «unset». Я попытался сделать это, чтобы очистить значение spinbox, а затем setPrefix. Но это не сработало. Любые другие решения?
Ты можешь попробовать 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».
Есть два решения для достижения того, что вы хотите.
Как pezy в другом ответе говорит, используя setSpecialValueText где текст отображается, когда текущее значение () == минимум () спинбокс
или немного более мощный: подкласс QSpinBox и переопределить следующие функции:
int valueFromText(const QString &text) const;
QString textFromValue(int value) const;
QValidator::State validate(QString & input, int & pos) const;
Посмотрите здесь, пытаясь что-то подобное QSpinBox введите NaN в качестве допустимого значения.
Подкласс QSpinBox и определите свое поведение.
Взгляните на это пример