【问题标题】:error when trying to create menu in Qt尝试在 Qt 中创建菜单时出错
【发布时间】:2013-04-17 14:54:41
【问题描述】:

我得到了错误:

不能调用成员函数'QMenuBar* QMainWindow::menuBar() const' 没有对象

在这个函数中,有什么想法吗?

void TextEditor::createMenu(){
    menu = new QMenu(tr("&TextEditor"), this);
    QMainWindow::menuBar()->addMenu(menu);
    menu->addAction(tr("&Bold"), this, SLOT(setBold()), tr("Alt+B"));
    menu->addAction(tr("&Underline"), this, SLOT(setUnderline()), tr("ALT+U"));
    menu->addAction(tr("&Italics"), this, SLOT(setItalics()), tr("Alt+I"));
}

【问题讨论】:

  • TextEditor 是 QMainWindow 吗?您应该只能调用 menuBar,没有限定符。 QMainWindow::menuBar() 可能被视为对静态方法的调用。

标签: c++ qt


【解决方案1】:

问题就在这里:

QMainWindow::menuBar()->addMenu(menu);
^^^^^^^^^^^^^

方法menuBar() 不是静态方法,你不能在没有对象的情况下调用它。你必须从一个对象中调用它:

main_window_object->menuBar()->addMenu(menu);
... or ...
this->menuBar()->addMenu(menu);

【讨论】:

    【解决方案2】:

    如果你的 TextEditor 类继承自 QMainWindow,你可以这样调用它。

    【讨论】:

      猜你喜欢
      • 2018-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多