Моя практика кодирования с использованием Qt может быть лучше всего описана следующим образом:
- Если виджет будет активно использоваться (например,
QLineEdit
, который предоставляет текст), я объявляю его в заголовочном файле, а затем инициализирую его в MainWindow.cpp
.
например TextEditor.h:
class TextEditor
{
//other code
private:
QLineEdit edtFind;
};
2 .. Если виджет не будет использоваться (например, QLabel
, QWidget
) или является частью системы слотов сигналов (например, QPushButton), я объявляю и инициализирую его внутри конструктора, используя new.
-e.g.
TextEditor::TextEditor()
{
//other code
QWidget* searchPanel = new QWidget();
edtFind = new QLineEdit("Enter Search Term");
QPushButton* findButton = new QPushButton("Find");
connect(findButton,SIGNAL(pressed()),this,SLOT(find()));
ui->statusbar->addPermanentWidget(searchPanel);
}
У меня вопрос, использую ли я эффективный подход в пункте 2? Было бы лучше не выделять память из кучи?
Спасибо.