在哪里为QMainWindow声明某些Qt对象:在头文件或构造函数中

Where to declare certain Qt objects for the QMainWindow: in header file or in constructor?

本文关键字:文件 构造函数 对象 QMainWindow 声明 Qt 在哪里      更新时间:2023-10-16

在我的主窗口中有几个对象(QMenus、QLabels、QLayouts、中央小部件等),我意识到它们不需要在主窗口的头文件中声明。相反,可以在主窗口的构造函数中声明它们。

例如,之前:

在主窗口.h 中

private:
    QMenu *fileMenu;
    // etc.

在主窗口.cpp 中

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

与。

在主窗口.cpp 中

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

如果作用域不是问题(例如,除了在主窗口的构造函数中创建fileMenu之外,我不需要在任何地方访问它),那么在哪里声明它有关系吗?对于这种情况,是否有"最佳实践"?

我对Qt/C++比较陌生,我意识到这可能更像是一个C++问题,而不是Qt问题。

对于您声明的每个变量,使用尽可能小的作用域是常见的规则。

所以,最好不要让它们成为类成员(不要在头文件中声明它们)。