关于某些任务,我必须做以下几件事。假设我有一个正值为0到1000的QDoubleSpinBox。每当用户试图降低spinbox的价值时,f.e。若要在值为0时单击“向下”按钮,则尖端盒的值必须为字符串"unset“。我尝试这样做,以清除尖晶盒的值,然后是setPrefix。但它没有起作用。还有其他解决办法吗?
发布于 2014-11-14 08:40:28
你可以试试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“。
发布于 2014-11-14 08:25:12
要实现你想要的,有两种解决方案。
正如pezy在另一个答案中所说的,使用setSpecialValueText,当尖晶盒的当前值() == minimum()时显示文本
或者更强大一点:子类QSpinBox和覆盖以下函数:
int valueFromText(const QString &text) const;
QString textFromValue(int value) const;
QValidator::State validate(QString & input, int & pos) const;看看这里,尝试类似的QSpinBox输入NaN作为有效值。
发布于 2014-11-14 08:26:57
子类QSpinBox并定义您的行为。
看看这个示例
https://stackoverflow.com/questions/26925680
复制相似问题