Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt用户界面名称空间_C++_Qt - Fatal编程技术网

C++ Qt用户界面名称空间

C++ Qt用户界面名称空间,c++,qt,C++,Qt,Qt自动生成的名称空间Ui的意义是什么 这两个名称空间相同吗 在第一个中,它包含类MainWindow从ui\u MainWindow.h的前向声明,为什么不声明为class ui::MainWindow?编译器如何知道MainWindow来自自动生成的Ui头 在主窗口中 namespace Ui { class MainWindow; //MainWindow from ui_MainWindow.h } namespace Ui { class MainWindow: public

Qt自动生成的名称空间
Ui
的意义是什么

这两个名称空间相同吗

在第一个中,它包含类MainWindow从
ui\u MainWindow.h
的前向声明,为什么不声明为
class ui::MainWindow
?编译器如何知道MainWindow来自自动生成的Ui头

在主窗口中

namespace Ui {
class MainWindow; //MainWindow from ui_MainWindow.h
}
namespace Ui {
    class MainWindow: public Ui_MainWindow {};
} // namespace Ui
在ui_主窗口中

namespace Ui {
class MainWindow; //MainWindow from ui_MainWindow.h
}
namespace Ui {
    class MainWindow: public Ui_MainWindow {};
} // namespace Ui

它用于将自动生成的窗口分组到一个名称空间中。它有助于区分从设计器ui文件生成的ui类和实现该功能的类

Qt自动生成的名称空间Ui的意义是什么

这样它就驻留在自己的“气泡”中,不会与任何其他类似命名的类发生冲突,比如显式创建的类。当然,他们可以让它被不同地调用,但是即使是名字空间也是C++中处理冲突的好方法。 这两个名称空间相同吗

是的,当然,在同一父命名空间中具有相同名称的命名空间在项目中总是相同的

我想我的意思是为什么在Ui_MainWindow.h中创建了一个名称空间Ui

那么,它会在其他地方被创造出来,真的吗?需要有一个生成此代码的文件,而不是用动态生成的代码污染任何现有的源文件。不管它是否恰巧被称为它是什么样子,这又只是个人的品味了

以及MainWindow.h中命名空间Ui中的类MainWindow如何知道它是Ui文件中MainWindow类的转发声明,而不是我创建的


<>这与QT无关,它只是C++基础。在我看来,您似乎不知道名称空间是什么以及它们是如何使用的。它将被名称空间“标记”,因此编译器当然会知道它引用的是哪个名称空间。现在想象一下没有名称空间的情况。这对编译器来说是完全不明确的。

我知道为什么在
MainWindow.h
中使用名称空间,我想我的意思是为什么在
Ui\u MainWindow.h
中创建名称空间Ui。在
MainWindow.h
中的名称空间Ui中
class MainWindow
如何知道它是Ui文件中
MainWindow
类的前向声明,而不是由我创建的。mw你说的名称空间“标记”是什么意思?在.moc文件中?我尝试创建一个类,并将它放入<>代码> UIA.MeNekWOR.H./C>中的名称空间UI中,并且不能在<代码>主窗口.H/CONT>中添加前向声明而不出错。@微企鹅:这是基本的C++ ->第14章。好的,OOPS。我很困惑,因为Ui_MainWindow.h是自动生成和隐藏的。我相信它是在编译时重新生成的。但总的来说,它们是相同的名称空间。@MicroPenguin你说的“它是隐藏的”是什么意思。您可以将它包含到
main window.cpp
文件中—它在您的代码中。记住:编译时不重新生成的源文件由您负责。仅仅因为某些东西来自Qt Creator中的模板,并不意味着你就不必确切地了解发生了什么。给我解释一下。“如果你不能,那你就不明白——但你应该这么做。”最后一项测试是,我的50克橡胶鸭子不止一次拯救了我的理智,也多次拯救了我的雇主。