为什么会出现这种错误:对'statusBar'的引用是不明确的......来了吗?这是一个错误吗?

时间:2009-12-30 15:30:57

标签: c++ qt4 ambiguous

我使用QT Designer创建了一个QMainWindow。 我们知道,默认情况下它有statusBar。

默认情况下,QT Designer将其对象名称为“statusBar”。 现在,当我试着打电话时: -

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

因为我们有一个原型函数:QStatusBar * QMainWindow :: statusBar()const

编译器显示错误: -

  

错误:对'statusBar'的引用不明确。

     

错误:候选人是:QStatusBar * Ui_MainWindow :: statusBar

     

错误:QStatusBar * QMainWindow :: statusBar()const

实际上,我正在读一本书“DANIEL MOLKENTIN建立Qt应用的艺术”。我正在编写书中给出的相同代码。

上面的代码在mainwindows.cpp中,我已经包含了“mainwindow.h”和&其中的“ui_mainwindow.h”......

这是QT4中的错误吗?

3 个答案:

答案 0 :(得分:2)

要求提供方法statusBar()的特定版本:

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

答案 1 :(得分:1)

问题是QMainWindow扩展了Ui_MainWindow,它也定义了statusBar方法。

在以前的QT版本中可能并非如此。

答案 2 :(得分:1)

我也读了那本书并遇到了同样的问题。决定是:

  1. 调用方法QMainWindow::statusBar()
    QMainWindow::statusBar()->showMessage(tr("File successfully loaded."), 3000);

  2. 或使用来自*statusBar的指针Ui_MainWindow Ui_MainWindow::statusBar->showMessage(tr("File successfully loaded."), 3000);