将字符串设置为QDoubleSpinBox

时间:2014-11-14 08:18:59

标签: c++ qt qspinbox

关于某项任务,我必须执行以下操作。 考虑我有一个QDoubleSpinBox,其正值从0到1000.每当用户试图降低spinbox的值时,f.e。当值为0时单击向下按钮,spinbox的值必须是字符串“unset”。我试图这样做,以清除spinbox的值,然后setPrefix。但它没有奏效。还有其他方法吗?

3 个答案:

答案 0 :(得分:9)

您可以尝试specialValueText

这是一个例子:

#include <QApplication>
#include <QDoubleSpinBox>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QDoubleSpinBox doubleSpinBox;
    doubleSpinBox.setRange(0.f, 1000.f);
    doubleSpinBox.setValue(1.f);
    doubleSpinBox.setSpecialValueText("unset");

    doubleSpinBox.show();
    return a.exec();
}

当值为0时,spinbox的值必须是字符串“unset”。

答案 1 :(得分:5)

有两种解决方案可以实现您的目标。

另一个答案中的pezy说使用setSpecialValueText,当旋转框的当前值()== minimum()时显示文本

或更强大:子类QSpinBox并覆盖以下函数:

int valueFromText(const QString &text) const;
QString textFromValue(int value) const;
QValidator::State validate(QString & input, int & pos) const;

看看这里,尝试类似的QSpinBox enter NaN as a valid value

答案 2 :(得分:-1)

子类QSpinBox并定义你的行为。
看一下这个example