A Пример просмотра изображений на веб-сайте документации QT содержит следующий фрагмент кода:
ImageViewer::ImageViewer()
: imageLabel(new QLabel)
, scrollArea(new QScrollArea)
, scaleFactor(1)
{
imageLabel->setBackgroundRole(QPalette::Base);
imageLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
imageLabel->setScaledContents(true);
scrollArea->setBackgroundRole(QPalette::Dark);
scrollArea->setWidget(imageLabel);
scrollArea->setVisible(false);
setCentralWidget(scrollArea);
createActions();
resize(QGuiApplication::primaryScreen()->availableSize() * 3 / 5);
}
Где imageLabel
и scrollArea
являются указателями на элементы QLabel
иQScrollArea
соответственно.
Я понимаю, что в строке scrollArea->setWidget(imageLabel);
область прокрутки становится владельцем указателя imageLabel и удаляет его при необходимости.Аналогично для setCentralWidget(scrollArea);
, где окно становится владельцем области scrollArea.
Однако, во время построения, если создание imageLabel
должно было быть успешным, но создание scrollArea
не удалось бы, imageLabel
не утечка?
Если да, каков канонический способ решить эту проблему?