如何始终在 QDoubleSpinbox 中显示符号(+ 或 -)?

How to always show sign (+ or -) in QDoubleSpinbox?

如果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();
}