Size: a a a

2021 June 09

AN

Alexander N in Qt
Кстати насчёт утечек. Если создать виджет и указать у него родителя, но например указатель на него будет локальной переменной будет ли утекать или таки менеджер даже так удалит его при уничтожении родителя?
источник

NM

Nastya Medveda in Qt
Это не очень согласуется с тем, что я до этого учила в С++. указатель объявлен как public и должен быть виден вне класса.
А как динамически созданный объект  может умереть вне конструктора, когда конструктор и нужен для выделения памяти и инициализации?
источник

m

mefest in Qt
родитель удалит
источник

AN

Alexander N in Qt
Просто насколько я помню там копии все лежат указателей.
источник

CC

Coccine Coccine in Qt
ты создаешь НОВЫЙ указатель в конструкторе
источник

m

mefest in Qt
ты в конструкторе новую переменную создаешь
источник

AN

Alexander N in Qt
А нафига я тогда храню их в полях родителя спрашивается? )
источник

CC

Coccine Coccine in Qt
resultLabel  = new QLabel("0");
источник

m

mefest in Qt
чтоб не искать среди детей
источник

NM

Nastya Medveda in Qt
А! спасибо! Точно же.
источник

AN

Alexander N in Qt
Ну напрямую конечно быстрее, но выходит портянка со списком всего, что там лежит )
источник

NM

Nastya Medveda in Qt
Раз уж пошел разговор о времени жизни. Поджскажите, почему когда я пытаюсь удалить динамические объекты в деструкторе, то программа выдает ошибку при закрытии?

Удаляю вот так:

MainWindow::~MainWindow()
{

   delete calculateButton;
   delete myEdit;
   delete resultLabel;
   delete centralWidget;
   delete mainLayout;

}
источник

AN

Alexander N in Qt
Потому что родитель их пытается удалить и происходит двойное удаление наверное?
источник

NM

Nastya Medveda in Qt
А это для всех динамических объектов работает вне зависимости от типа? Я что угодно могу в куче выделять и утечки памяти не будет?
источник

AN

Alexander N in Qt
из той же серии что и
auto foo = std::make_unique<int>(5);
delete foo.get();
// Теперь оно упадёт при выходе из скоупа т.к. объект уже удалён

грубо говоря
источник

AN

Alexander N in Qt
Нет это касается виджетов т.к. они в дереве находятся. И только при указании родителя
источник

RY

Roman Yastrebckov in Qt
Ребят, привет, как можно закрыть таб у tabWidget через код?
источник

NM

Nastya Medveda in Qt
Понятно, спасибо.
источник

M

Mr.Mait in Qt
removeTab ?
источник

AN

Alexander N in Qt
Угу например
myEdit = new QTextEdit(this);
сразу назначает MainWindow родителем и при его уничтожении уничтожается и он
источник