No, 0does not delete validator, deletes only validatorfrom lineEdit. If you still want to use
edit.setValidator(new QIntValidator(0,100));
then you can delete it with:
ui->lineEdit->setValidator(new Validator);
QValidator *vaal = const_cast<QValidator *>(ui->lineEdit->validator());
vaal->deleteLater();
or
(const_cast<QValidator *>(ui->lineEdit->validator()))->deleteLater();
where validatoris the subclass with:
Validator::~Validator()
{
qDebug() <<"~Validator";
}
Output:
~Validator
Or just use:
Validator *vaal = new Validator;
ui->lineEdit->setValidator(vaal);
ui->lineEdit->setValidator(0);
vaal->deleteLater();
The conclusion is the same.
, setValidator QLineEdit, validator. :
ui->lineEdit->setValidator(new QIntValidator(0,100,this));
qDebug() << ui->lineEdit->validator()->parent();
: MainWindow(0x28fdc8, name = "MainWindow") , lineEdit!
ui->lineEdit->setValidator(new QIntValidator(0,100));
qDebug() << ui->lineEdit->validator()->parent();
: QObject(0x0)
validator - .