Qt: QMenu, похоже, не удаляется после удаления MainWindow

В конструкторе MainWindow у меня есть кусок кода:

QMenu * filemenu = this->menuBar()->addMenu(tr("File"));
QAction * openButton = new QAction(tr("Open"), this);
connect(openButton, SIGNAL(triggered()), this, SLOT(input()));
filemenu->addAction(openButton);

Казалось, все было хорошо, пока я не проверил проверку памяти. Вальгринд, похоже, говорит, что здесь есть утечка памяти. Не следует ли автоматически удалять QMenu перед удалением MainWindow? Я попытался запомнить указатель на файловое меню и удалить его вручную в деструкторе MainWindow, но это ничего не изменило. У кого-нибудь есть идеи, что я делаю не так?

1

Решение

Не следует ли автоматически удалять QMenu перед удалением MainWindow?

Вы можете подключить слот к сигналу destroy () вашего экземпляра QMenu (filemenu) и распечатать что-нибудь там с помощью qDebug (). Если это напечатано для уничтожения главного окна, это означает, что деструктор вызван, то есть удален.

...
connect(myMenuPointer, SIGNAL(destroyed()), receiverPointer, SLOT(test()));
...

MyClass::test()
{
qDebug() << "My menu deleted automatically";
}

Иногда существует утечка памяти, обнаруженная в приложении Qt с помощью valgrind, если что-то под ней пропускает память, например, glibc и так далее. Возможно, это так, но ответ на ваш вопрос заключается в том, что QMenu будет автоматически удалено.

1

Другие решения


По вопросам рекламы [email protected]