Russian Qt Forum

Qt => Вопросы новичков => Тема начата: SignalSlot от Август 06, 2021, 16:11



Название: Вопрос про память!
Отправлено: SignalSlot от Август 06, 2021, 16:11
Здравствуйте!

Помогите, пожалуйста, разобраться или подскажите где прочитать.
Ситуация: есть форма (Ф1) с кнопкой. По нажатию на эту кнопку должна открываться новая форма (Ф2). Она должна быть самостоятельной (не зависить от родителя и не закрываться, если закроем Ф1). Но при этом они должны соединяться сигналом-слотом.

Пример функции по нажатию кнопки:
void on_btn_open_clicked() {
  FormTable *fTable = new FormTable();
  connect(fTable, &FormTable::sig_retresh, this, &MainWindow::slot_refresh);
}

А вот и вопросы: если я закрою Ф2 (FormTable) что будет происходить с памятью? Форма действительно закроется, память освободится? А что будет с коннектом? Он самостоятельно дисконнектится?
А если я буду использовать смартпоинтеры, то что будет в памятью при закрытии Ф2 (FormTable) ?
void on_btn_open_clicked() {
  QPointer <FormTable> fTable = new FormTable();
  connect(fTable, &FormTable::sig_retresh, this, &MainWindow::slot_refresh);
}



Название: Re: Вопрос про память!
Отправлено: qtkoder777 от Август 12, 2021, 15:24
 Можно совсем не освобождать память. Это ж не сервер. Памяти много. На сеанс хватит.


Название: Re: Вопрос про память!
Отправлено: Igors от Август 13, 2021, 06:36
А вот и вопросы: если я закрою Ф2 (FormTable) что будет происходить с памятью? Форма действительно закроется, память освободится?
Точнее "удалится ли Ф2" - зависит от установок, см WA_DeleteOnClose

А что будет с коннектом? Он самостоятельно дисконнектится?
Автоматом разрывается при удалении, если только переключаете видимость - с коннектом ничего не происходит


Название: Re: Вопрос про память!
Отправлено: SignalSlot от Сентябрь 10, 2021, 15:30
Всем спасибо!