【问题标题】:Qt menuBar() ErrorQt menuBar() 错误
【发布时间】:2009-06-18 21:13:15
【问题描述】:

我正在学习 Qt4 并完成他们的教程。

在本教程中:

http://doc.trolltech.com/4.5/mainwindows-menus-mainwindow-cpp.html

他们有以下代码:

fileMenu = menuBar()->addMenu(tr("&File"));

导致编译器抛出此错误

g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I。 -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -一世。 -一世。 -o main.o main.cpp g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I。 -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -一世。 -一世。 -o 主窗口.o 主窗口.cpp MainWindow.cpp:在成员函数“void MainWindow::createMenus()”中: MainWindow.cpp:56: 错误:'((MainWindow*)this)->MainWindow::menuBar' 不能用作函数 MainWindow.cpp:61: 错误:'((MainWindow*)this)->MainWindow::menuBar' 不能用作函数 make: *** [MainWindow.o] 错误 1

有谁知道我该如何解决这个问题?

[编辑] 使用 g++ 添加完整的错误消息

【问题讨论】:

    标签: qt4 menubar


    【解决方案1】:

    您确定您是从QMainWindow 继承的吗,您没有创建或继承任何可能影响名称menuBar 的字段,并且您已经运行moc(或让qmake 这样做是为了你)?

    示例中的mainwindow.cppmainwindow.hmain.cppmenus.pro,未经修改,应该可以正常工作。

    $ cd 示例/主窗口/菜单/ $ ls main.cpp mainwindow.cpp mainwindow.h menus.pro $ qmake $ 制作 g++ -c -pipe -g -O2 -mtune=native -pipe -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I。 -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -一世。 -o 主窗口.o 主窗口.cpp g++ -c -pipe -g -O2 -mtune=native -pipe -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I。 -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -一世。 -o main.o main.cpp /usr/bin/moc -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -一世。主窗口.h -o moc_mainwindow.cpp g++ -c -pipe -g -O2 -mtune=native -pipe -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I。 -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -一世。 -o moc_mainwindow.o moc_mainwindow.cpp g++ -Wl,--按需 -Wl,--hash-style=both -o menus mainwindow.o main.o moc_mainwindow.o -L/usr/lib64/qt4 -lQtGui -L/usr/lib64 -L/ usr/lib64/qt4 -L/usr/X11R6/lib64 -pthread -lpng -lfreetype -lgobject-2.0 -lSM -lICE -pthread -pthread -lXrender -lXrandr -lXinerama -lfontconfig -lXext -lX11 -lQtCore -lz -lm - pthread -lgthread-2.0 -lrt -lglib-2.0 -ldl -lpthread $ ls -F Makefile main.o mainwindow.h menus* moc_mainwindow.cpp main.cpp mainwindow.cpp mainwindow.o menus.pro moc_mainwindow.o

    【讨论】:

    • 我有 qmake 为我运行它。 qmake -project qmake menus.pro make g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I。 -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -一世。 -一世。 -o MainWindow.o MainWindow.cpp MainWindow.cpp: 在成员函数'void MainWindow::createMenus()': MainWindow.cpp:56: error: '((MainWindow*)this)->MainWindow::menuBar' 不能用作函数 .. [对每一行重复] .. make: *** [MainWindow.o] 错误 1
    • 我认为 ehemient 是对的 Scott。该错误消息意味着编译器认为“menuBar”不是函数,这几乎可以肯定意味着您有一个变量、成员或本地变量,它也称为“menuBar”并且正在阻止(隐藏)同名函数。
    【解决方案2】:

    由于某种原因,QMainWindow 没有正确设置。这是通过调用基类构造函数来解决的。

    【讨论】:

    • “未正确设置”是什么意思?基类的构造函数总是在派生类的构造函数之前调用。听起来你没有正确声明继承,现在修复它。
    猜你喜欢
    • 1970-01-01
    • 2011-12-19
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多