Top.Mail.Ru
Уведомления
Очистить все

Падает простейшее приложение на Qt при использовании QSharedPointer и QLabel

(@ronda)
New member

Добрый день,

обнаружил странное поведение при работе минимального приложения: при закрытии приложение завершается с кодом ошибки (не с кодом 0 как должно быть в случае успешного завершения). Добавил в стандартный класс MainWindow

mainwindow.h:

QSharedPointer<QLabel> label;

В конструкторе в mainwindow.cpp:

label = QSharedPointer<QLabel>(new QLabel(this));
ui->mainLayout->addWidget(label.data());

Методом проб и ошибок выяснил, что проблема точно появляется при использовании label, если убрать, то проблема пропадает.

Буду благодарен любым советам )

Цитата
Создатель темы Размещено : 25.04.2025 12:41
Aveal
(@aveal)
Top level Admin

Приветствую, здесь объект удаляется дважды, в этом проблема. Один раз label удаляет QSharedPointer, а второй раз MainWindow, так как он указан в качестве родителя при создании QLabel. Как вариант, надо изменить:

label = QSharedPointer<QLabel>(new QLabel(this));

на

label = QSharedPointer<QLabel>(new QLabel());
ОтветитьЦитата
Размещено : 26.04.2025 12:34
Поделиться: