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

发布于 2025-01-08 06:52:49 字数 658 浏览 0 评论 0原文

我的主窗口中有几个对象(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.
}

如果范围不是问题(例如,除了在 mainwindow 的构造函数中创建 fileMenu 时之外,我不需要在任何地方访问 fileMenu),是否会这样做我在哪里声明有关系吗?对于这种情况有“最佳实践”吗?

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

There are several objects in my main window (QMenus, QLabels, QLayouts, the central widget, etc.) that I am realizing don't need to be declared in the main window's header file. Instead, it is fine to declare them in the main window's constructor.

E.g., before:

in mainwindow.h

private:
    QMenu *fileMenu;
    // etc.

in mainwindow.cpp

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

vs.

in mainwindow.cpp

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

If scope isn't an issue (e.g., I don't need access to fileMenu anywhere other than when I create it in mainwindow's constructor), does it matter where I declare it? Is there a "best practice" for such situations?

I'm relatively new to Qt/C++, and I realize this might be more of a C++ question than a Qt question.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

往事随风而去 2025-01-15 06:52:49

常见规则是为声明的每个变量使用尽可能小的范围。

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

It is common rule to use smallest scope possible for every variable you declare.

So, you'd better do not make them class members (not declare them in header file).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文