1

タイトルのとおり、ローカルで作成された複数の 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 Loop 内で) 作成された複数の QIntValidator をすべて削除する必要があります。

道がわからない。さらに進めるための提案/アイデアを教えてください??

前もって感謝します

4

1 に答える 1