5

关于某些任务,我必须执行以下操作。考虑我有一个 QDoubleSpinBox ,其正值从 0 到 1000。每次用户尝试降低 spinbox 的值时,fe 在值为 0 时单击向下按钮,spinbox 的值必须是字符串“未设置”。我试图这样做,清除 spinbox 的值,然后 setPrefix。但它没有奏效。还有其他解决方案吗?

4

3 回答 3

10

你可以试试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();
}

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

于 2014-11-14T08:40:28.170 回答
6

有两种解决方案可以实现您想要的。

正如其他答案中的 pezy 所说,使用setSpecialValueText当旋转框的当前 value() == 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

于 2014-11-14T08:25:12.490 回答
-1

子类 QSpinBox 并定义您的行为。
看看这个例子

于 2014-11-14T08:26:57.747 回答