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

时间:2018-11-01 17:51:02

标签: c++ qt qt5 qdoublespinbox

如果QDoubleSpinbox中的值为正,则不显示任何符号。

enter image description here

如果将该值更改为负数,则会自动添加“-”号。

enter image description here

如果前缀被强制为“ +”,则正数将显示为符号

doubleSB->setPrefix("+");

enter image description here

但是“ +”将保留在那里,并且当设置的值为负数时不会自动删除

enter image description here

有没有办法始终显示正确的标志?

  • “ +”号,如果值为正数
  • “-”号,如果该值为负(默认情况下,则为负)

1 个答案:

答案 0 :(得分:4)

一种可能的解决方案是覆盖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();
}