Что касается некоторой задачи, я должен сделать следующее. У меня есть QDoubleSpinBox с положительными значениями от 0 до 1000. И каждый раз, когда пользователь пытается снизить значение spinbox, f.e. для нажатия кнопки «вниз», когда значение равно 0, значение спинбокса должно быть «неустановлено». Я попытался сделать это, чтобы очистить значение spinbox, а затем setPrefix. Но это не сработало. Любые другие решения?Установить строку в QDoubleSpinBox
ответ
Вы можете попробовать 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, то значение должно быть со счётчиком строка «отключено».
Хорошая функциональность: с помощью Qt довольно долгое время и никогда не думал, что что-то подобное существует. Спасибо за ваш совет! – Robert
Существует два решения для достижения желаемого.
Как 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.
Подкласс QSpinBox и определение вашего поведения.
Посмотрите на это example
Hm, но QDoubleSpinBox отображает числа с плавающей запятой. Однако вы хотите установить строку? Может быть, лучше использовать этикетку вместе со спин-боксом? – vahancho