- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我很好奇是否有人知道通过将其重置为零来删除 QValidator
是否会泄漏内存。 QT Documentation提到验证器被“移除”,但这是否也意味着它被删除了?
我的意思的一个例子......
QLineEdit edit;
edit.setValidator(new QIntValidator(0,100));
// .... use the line edit
edit.setValidator(0);
最佳答案
不,0
不会删除validator
,只会从lineEdit
中删除validator
。如果你还想用
edit.setValidator(new QIntValidator(0,100));
然后你可以删除它:
ui->lineEdit->setValidator(new Validator);
QValidator *vaal = const_cast<QValidator *>(ui->lineEdit->validator());//validator returns const, we use const_cast to avoid problems
vaal->deleteLater();
或
(const_cast<QValidator *>(ui->lineEdit->validator()))->deleteLater();
//here we just does not create unnecessary QValidator *vaal
其中 Validator
是一个子类:
Validator::~Validator()
{
qDebug() <<"~Validator";
}
输出是:
~Validator
或者只使用:
Validator *vaal = new Validator;
ui->lineEdit->setValidator(vaal);
ui->lineEdit->setValidator(0);
vaal->deleteLater();
输出相同。
此外,当您使用 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
仅由您负责。
关于c++ - 重置 QValidator 是否会泄漏内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27257027/
我有一个 Qt 小部件,它应该只接受一个十六进制字符串作为输入。将输入字符限制为 [0-9A-Fa-f] 非常简单,但我想让它在“字节”之间显示一个分隔符,例如,如果分隔符是空格,然后用户键入 001
首先,抱歉我的英语不好。 我正在尝试从用户那里获取 IP。我正在使用 QRegExpValidator 检查用户输入。验证器成功地阻止了不需要的字符。但我想知道当用户点击按钮时它是一个正确的 IP。当
我目前正在使用一种相当残酷的方法来获取 QValidator 可以轻松提供的内容。在这个小部件上找到一个简单的信息是相当困难的。下面的代码从另一篇文章复制/粘贴(经过一些小的编辑后)。它创建了一个带有
我正在尝试使用 QValidator 后代(实际上是在 PyQt5 中,但这应该无关紧要)来验证一系列行编辑。 一小段摘录是: class IPv4(QWidget): def __init_
我很好奇是否有人知道通过将其重置为零来删除 QValidator 是否会泄漏内存。 QT Documentation提到验证器被“移除”,但这是否也意味着它被删除了? 我的意思的一个例子......
示例代码: QDoubleValidator *validator = new QDoubleValidator(); myInputLineEdit->setValidator(validator)
我的项目中有一个 QLineEdit。我想在 lineEdit 上使用 QValidation。 #Create lineEdit itemValue = QtWidgets.QLineEdit()
我的项目中有一个 QLineEdit。我想在 lineEdit 上使用 QValidation。 #Create lineEdit itemValue = QtWidgets.QLineEdit()
在将可编辑的 QCombobox 输入添加到 QCombobox 之前,我尝试验证它是否是目录。 from PySide import QtGui, QtCore class DirValidator
我正在尝试开发一个使用 Qt 的应用程序。我试图让应用程序同时使用 PySide 和 PyQt4。除了我的自定义 QtGui.QValidator 类之外,我没有遇到任何重大兼容性问题: import
我想要一个接受 ip 地址的行编辑。如果我将输入掩码作为: ui->lineEdit->setInputMask("000.000.000.000"); 它接受大于 255 的值。如果我给出一个验证器
QLineEdit 有一个信号 QLineEdit::editingFinished 当用户完成编辑时发出,例如按回车键。但是,如果设置了验证器或输入掩码,则只有在输入有效时才会发出 editingF
我是一名优秀的程序员,十分优秀!