因此我有一个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();
}
答案 0 :(得分:2)
Qt docs说:
如果lineEdit的QLineEdit :: validator()返回0,则为内部 旋转框的验证器将在行编辑中设置。
因此,为了禁用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();