Где объявить определенные объекты Qt для QMainWindow: в заголовочном файле или в конструкторе? - PullRequest
0 голосов
/ 22 февраля 2012

В моем главном окне есть несколько объектов (QMenus, QLabels, QLayouts, центральный виджет и т. Д.), Которые, как я понимаю, не нужно объявлять в заголовочном файле главного окна. Вместо этого можно объявить их в конструкторе главного окна.

Например, до:

в mainwindow.h

private:
    QMenu *fileMenu;
    // etc.

в mainwindow.cpp

MainWindow::MainWindow()
{
    fileMenu = menuBar()->addMenu("File");
    // etc.
}

против

в mainwindow.cpp

MainWindow::MainWindow()
{
    QMenu *fileMenu = menuBar()->addMenu("File");
    // etc.
}

Если область действия не является проблемой (например, мне не нужен доступ к fileMenu где-либо, кроме случаев, когда я создаю его в конструкторе mainwindow), имеет ли значение, где я его объявляю? Есть ли «лучшая практика» для таких ситуаций?

Я относительно новичок в Qt / C ++ и понимаю, что это может быть скорее вопросом C ++, чем вопросом Qt.

1 Ответ

2 голосов
/ 22 февраля 2012

Общепринято правило использовать наименьшую возможную область действия для каждой объявленной вами переменной.

Так что лучше не делать их членами класса (не объявляйте их в заголовочном файле).

...