Если значение в QDoubleSpinbox положительное, оно не показывает никаких признаков.
Если значение изменяется на отрицательное, автоматически добавляется знак «-».
Если префикс принудительно равен «+», то положительные числа будут отображаться со знаком
doubleSB->setPrefix("+");
Но «+» останется там и не будет автоматически удален, когда установленное значение отрицательно
Есть ли способ всегда показывать правильный знак?
Возможное решение — переписать 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();
}
Других решений пока нет …