Как всегда показывать знак (+ или -) в QDoubleSpinbox? - PullRequest
0 голосов
/ 01 ноября 2018

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

enter image description here

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

enter image description here

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

doubleSB->setPrefix("+");

enter image description here

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

enter image description here

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

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

1 Ответ

0 голосов
/ 01 ноября 2018

Возможным решением является перезапись метода 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();
}
...