2

我使用 QT Designer 创建了一个 QMainWindow。我们知道,它默认有状态栏。

默认情况下,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中的错误吗?

4

3 回答 3

2

询问方法 statusBar() 的特定版本:

Ui_MainWindow::statusBar()->showMessage(tr("File successfully loaded."), 3000);
于 2009-12-30T15:55:19.143 回答
1

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

在以前的 QT 版本中可能不是这种情况。

于 2009-12-30T15:34:44.487 回答
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);

于 2012-03-09T08:58:13.453 回答