【问题标题】:Set string to QDoubleSpinBox将字符串设置为 QDoubleSpinBox
【发布时间】:2023-03-09 02:10:01
【问题描述】:

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

【问题讨论】:

  • 嗯,不过QDoubleSpinBox是用来显示浮点数的。但是你想设置一个字符串?也许将标签与旋转框一起使用会更好?

标签: c++ qt qspinbox


【解决方案1】:

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

正如另一个答案中的 pezy 所说,使用 setSpecialValueText 当当前值() == 微调框的最小值()时显示文本

或者更强大一点:子类 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】:

    你可以试试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”。

    【讨论】:

    • 不错的功能:使用 Qt 有一段时间了,从没想过有这样的东西存在。感谢您的提示!
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-14
      • 1970-01-01
      • 2017-11-05
      • 1970-01-01
      • 2013-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多