示例代码:
QDoubleValidator *validator = new QDoubleValidator();
myInputLineEdit->setValidator(validator);
// delete validator;
注意:myInputLineEdit是一个QLineEdit指针,并将随其父项一起被删除。
我的问题是,我应该在什么时候删除验证器?因为它是手动创建的,而setValidator()似乎不会根据文档拥有此指针。如果我不删除它,会出现内存泄漏吗?
我尝试像注释掉的代码一样立即删除它,然后注意到myInputLineEdit的验证器变为0。所以我认为我可能需要在myInputLineEdit被删除后再删除它。
另一个想法是,我可以给验证器一个父项,这样它就会随着其父项一起被删除,这是一个好方法吗?如果没有一个好的候选项来作为父项怎么办?
谢谢
setValidator
为什么不拥有所有权感兴趣的话:可能是因为你可以将同一个验证器用于多个输入小部件,所以它是一种共享所有权。但是QObjects没有共享所有权,而是具有唯一的父级所有权,因此您需要将父级设置为某个小部件(无论是行编辑还是其父级,取决于哪个更合理)。 - leemes