因此,我有一个QSpinBox,并希望取消对不仅编写int值而且在其中写入字符串的验证。请帮我把这个修好。我试过了,但它不起作用:
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();
}发布于 2014-03-24 13:07:48
Qt文档说:
如果lineEdit的QLineEdit::验证器()返回0,则将在行编辑中设置spinbox的内部验证器。
因此,为了禁用QSpinBox的内置验证器,需要设置自己的(虚拟?)。也就是说。
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();https://stackoverflow.com/questions/22610188
复制相似问题