Qt:如何删除在QlineEdit上实现的本地创建的多个QIntValidator指针对象?
根据标题,如何删除多个QIntValidator指针本地创建的对象。我坚持内存泄漏的问题。Qt:如何删除在QlineEdit上实现的本地创建的多个QIntValidator指针对象?
我有如下的功能:
void ABC::setTableDataItems(QStringList headerData) {
int row = headerData.size();
int column = 0;
if (_txtLineEdit != NULL) {
delete _txtLineEdit;
_txtLineEdit = 0;
}
for (int i = 0; i < row ; i++)
{
_txtLineEdit = new QLineEdit();
_txtLineEdit->setMaxLength(_pktStruct[i].ItemDataLength);
_txtLineEdit->setText(headerData.at(i));
_pktStruct[i].currentLine = _txtLineEdit;
QString regExp = "[01]{1,";
regExp.append(QString("%1").arg(_pktStruct[i].ItemDataLength)).append("}");
long maxDigit = getMaxValueForDigit(_pktStruct[i].ItemDataLength);
QIntValidator* decValidator = new QIntValidator(0, maxDigit, _txtLineEdit );
QRegExpValidator* binValidator = new QRegExpValidator(QRegExp(regExp),_txtLineEdit);
switch (_pktStruct[i].ItemDataType)
{
case DATA_TYPE_ASCII:
break;
case DATA_TYPE_HEX:
break;
case DATA_TYPE_NUM:
_txtLineEdit->setValidator(decValidator);
break;
case DATA_TYPE_BINARY:
_txtLineEdit->setValidator(binValidator);
break;
case DATA_TYPE_MAX:
break;
}
ui->pcusim_cmd_task_tableWidget->setCellWidget(i, column, _txtLineEdit);
connect(_txtLineEdit, SIGNAL(textChanged(QString)), this, SLOT(on_pcusim_cmd_task_tableWidget_linedit_cellChanged(QString)));
}
}
在上述功能,我需要在循环之前删除动态创建的(内部For循环)中的所有多个QIntValidator每当上述函数被调用。
不知道路。请给出一些建议/想法继续进行下去?
在此先感谢
回答:
你为什么不这样做
QValidator* pValidator = NULL; switch (_pktStruct[i].ItemDataType)
{
case DATA_TYPE_NUM:
// create the proper int validator here
// ...
pValidator = new QIntValidator(0, maxDigit, _txtLineEdit);
break;
case DATA_TYPE_BINARY:
// create the proper regexp validator here
// ...
pValidator = new QRegExpValidator(QRegExp(regExp),_txtLineEdit);
break;
}
_txtLineEdit->setValidator(pValidator);
这样,你不要创建不使用验证。
由于您将_txtLineEdit作为构建验证器的父项来传递,因此当它们的父QLineEdit对象被销毁时,它们将被删除。
顺便说一句,setCellWidget()接管小部件的所有权,所以你不需要delete _txtLineEdit;
(假设这是你传递给它的那个,你应该在这种情况下创建它们的列表)
以上是 Qt:如何删除在QlineEdit上实现的本地创建的多个QIntValidator指针对象? 的全部内容, 来源链接: utcz.com/qa/260977.html