Как всегда показывать знак (+ или -) в QDoubleSpinbox?

Если значение в QDoubleSpinbox положительное, оно не показывает никаких признаков.

введите описание изображения здесь

Если значение изменяется на отрицательное, автоматически добавляется знак «-».

введите описание изображения здесь

Если префикс принудительно равен «+», то положительные числа будут отображаться со знаком

doubleSB->setPrefix("+");

введите описание изображения здесь

Но «+» останется там и не будет автоматически удален, когда установленное значение отрицательно

введите описание изображения здесь

Есть ли способ всегда показывать правильный знак?

  • знак «+», если значение положительное
  • Знак «-», если значение отрицательное (как по умолчанию)

3

Решение

Возможное решение — переписать textFromValue() метод и добавьте этот символ, если необходимо:

#include <QApplication>
#include <QDoubleSpinBox>

class DoubleSpinBox: public QDoubleSpinBox
{
public:
using QDoubleSpinBox::QDoubleSpinBox;
QString textFromValue(double value) const override
{
QString text = QDoubleSpinBox::textFromValue(value);
if(value > 0)
text.prepend(QChar('+'));
return text;
}
};

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
DoubleSpinBox w;
w.setMinimum(-100);
w.setSuffix("%");
w.show();

return a.exec();
}
4

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

Других решений пока нет …

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