如果QDoubleSpinbox中的值为正,则不显示任何符号。
如果将该值更改为负数,则会自动添加“-”号。
如果前缀被强制为“ +”,则正数将显示为符号
doubleSB->setPrefix("+");
但是“ +”将保留在那里,并且当设置的值为负数时不会自动删除
有没有办法始终显示正确的标志?
答案 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();
}