在哪里为 QMainWindow 声明某些 Qt 对象:在头文件中还是在构造函数中?
我的主窗口中有几个对象(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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
常见规则是为声明的每个变量使用尽可能小的范围。
所以,你最好不要让它们成为类成员(不要在头文件中声明它们)。
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).