C++ 此错误的原因:对“状态栏”的引用不明确。。来吗?这是虫子吗?

C++ 此错误的原因:对“状态栏”的引用不明确。。来吗?这是虫子吗?,c++,qt4,ambiguous,C++,Qt4,Ambiguous,我使用QT设计器创建了一个QMainWindow。 正如我们所知,默认情况下它有状态栏 默认情况下,QT设计器将其objectname命名为statusBar。 现在,当我试着打电话时,比如:- statusBar()->showMessage(tr("File successfully loaded."), 3000); 因为我们有一个原型函数:QStatusBar*QMainWindow::statusBar const 编译器显示错误:- 错误:对“状态栏”的引

我使用QT设计器创建了一个QMainWindow。 正如我们所知,默认情况下它有状态栏

默认情况下,QT设计器将其objectname命名为statusBar。 现在,当我试着打电话时,比如:-

statusBar()->showMessage(tr("File successfully loaded."), 3000);
因为我们有一个原型函数:QStatusBar*QMainWindow::statusBar const

编译器显示错误:-

错误:对“状态栏”的引用不明确

错误:候选项为:QStatusBar*Ui_主窗口::状态栏

错误:QStatusBar*QMainWindow::statusBar常量

事实上,我在看DANIEL MOLKENTIN的一本书《构建Qt应用程序的艺术》。我正在编译书中给出的相同代码

上面的代码在mainwindows.cpp中,我在其中包含mainwindow.h&ui\u mainwindow.h


这是QT4中的一个错误吗?

问题在于QMainWindow扩展了Ui_MainWindow,它还定义了statusBar方法


QT以前的版本可能不是这样。

询问方法状态栏的特定版本:

Ui_MainWindow::statusBar()->showMessage(tr("File successfully loaded."), 3000);

我也读过那本书,也有同样的问题。决定是:

调用方法QMainWindow::statusBar QMainWindow::statusBar->showMessagetrFile已成功加载,3000

或者使用Ui_主窗口中的指针*状态栏 Ui_主窗口::状态栏->showMessagetrFile已成功加载,3000


我是一个新手,只需要了解C++基础知识。我有没有发现bug?没有,这是正常行为,不是bug。由于statusBar有两个定义,因此您需要显式选择一个。否将引发错误。。Ui_主窗口中没有名为statusBar的函数。。不管怎样,我认为你写得很匆忙。它应该是QMainWindow::statusBar。。。。。但是,主要议程是,这是一个错误吗?这不是你问题中上面的错误所说的。是的,这是你的代码或书中的一个BUG。但是如果没有像代码这样的上下文,就不可能进一步缩小范围。您有一个成员变量名statusBar和一个方法名statusBar。编译器不知道使用哪一个。但是,它们都位于不同的类中:Ui_MainWindow和QMainWindow。我想知道这些课程之间的关系是什么?如果一个是从另一个继承的,为什么没有隐藏的火腿?如果他们不相关,怎么会有冲突?你确定你没有添加一些奇怪的东西吗?多重继承?