将字符串设置为QDoubleSpinBox

Edu*_*yan 3 c++ qt qspinbox

关于某项任务,我必须做以下事情.考虑我有一个QDoubleSpinBox,其正值从0到1000.每当用户尝试降低spinbox的值时,fe在值为0时单击向下按钮,则spinbox的值必须为字符串"unset".我试图这样做,以清除spinbox的值,然后setPrefix.但它没有奏效.还有其他方法吗?

pez*_*ezy 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();
}
Run Code Online (Sandbox Code Playgroud)

当value为0时,spinbox的值必须是字符串"unset".

  • 不错的功能:使用Qt很长一段时间,从来没有想过这样的东西存在.谢谢你的提示! (2认同)

Rob*_*ert 5

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

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

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

int valueFromText(const QString &text) const;
QString textFromValue(int value) const;
QValidator::State validate(QString & input, int & pos) const;
Run Code Online (Sandbox Code Playgroud)

看看这里,尝试类似QSpinBox输入NaN作为有效值.