Qt 在QSpinBox中禁用验证
因此,我有一个QSpinBox,并希望取消验证,以便不仅写入int值,而且写入其中的字符串。 请帮我把这个修好。 我尝试过这个,但不起作用:Qt 在QSpinBox中禁用验证,qt,validation,qspinbox,Qt,Validation,Qspinbox,因此,我有一个QSpinBox,并希望取消验证,以便不仅写入int值,而且写入其中的字符串。 请帮我把这个修好。 我尝试过这个,但不起作用: class Spinbox:public QSpinBox { public: Spinbox(QWidget* parent=0) :QSpinBox(parent){} void setLineEdit(QLineEdit *l) { QSpinBox::setLineEdit(l);
class Spinbox:public QSpinBox
{
public:
Spinbox(QWidget* parent=0)
:QSpinBox(parent){}
void setLineEdit(QLineEdit *l)
{
QSpinBox::setLineEdit(l);
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Spinbox de;
QLineEdit le;
le.setValidator(0);
le.setText("text");
de.setLineEdit(&le);
de.show();
return a.exec();
}
Qt文档说:
如果lineEdit的QLineEdit::validator()返回0,则内部
spinbox的验证程序将在编辑行上设置
因此,为了禁用QSpinBox的内置验证器,您需要设置自己的验证器(dummy?)。即
@EduardRostomyan使用您自己的验证器而不是QIntValidator。@EduardRostomyan,我已经更新了我的答案并添加了一个虚拟验证器,允许在编辑行中设置任何内容。
class Validator : public QValidator
{
public:
State validate(QString &input, int &pos ) const
{
return QValidator::Acceptable;
}
};
[..]
Spinbox de;
QLineEdit le;
le.setValidator(new Validator());
le.setText("text");
de.setLineEdit(&le);
de.show();