Каков наилучший способ (место) инициализировать QWidgets, когда вы добавляете их программно?Что такое подходящее место для инициализации QWidgets?
я могу думать о том, чтобы сделать это:
1) Создание экземпляров в файле определения, а затем инициализировать их в списке инициализации. Кажется, это правильный путь, но он становится неряшливым, чем больше QWidgets, которое нужно добавить в Window.
class SomeWindow : QDialog{
...
private:
QLabel label1;
QLabel label2;
...
}
SomeWindow::SomeWindow(...) : QDialog(...),
label('label1 text'), label('label2 text')
{
...
layout.addWidget(&label1);
layout.addWidget(&label2);
...
}
2) Исходя из C#, как правило, нравится, но это, кажется, генерировать утечку памяти ...
SomeWindow::SomeWindow(...) : QDialog(...)
{
QLabel* label1 = new QLabel('label1 text');
QLabel* label2 = new QLabel('label2 text');
...
layout.addWidget(label1);
layout.addWidget(label2);
...
}
Есть ли лучший способ сделать это, что я не хватает?
Приносим извинения за новички вопрос.
Что заставляет вас думать, что в № 2 есть утечка памяти? – thuga
Правильный подход - второй. Это обсуждалось много. Например здесь: http://stackoverflow.com/questions/18984925/c-why-do-i-create-these-widgets-on-the-heap. – vahancho