2009-06-18 63 views
0

我正在学习Qt4并通过他们的教程进行工作。Qt menuBar()错误

在本教程中:

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. -I. -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. -I. -I. -o MainWindow.o MainWindow.cpp 
MainWindow.cpp: In member function ‘void MainWindow::createMenus()’: 
MainWindow.cpp:56: error: ‘((MainWindow*)this)->MainWindow::menuBar’ cannot be used as a function 
MainWindow.cpp:61: error: ‘((MainWindow*)this)->MainWindow::menuBar’ cannot be used as a function 
make: *** [MainWindow.o] Error 1 

有谁知道我可以修复这个?

[编辑]增加了完整的错误信息与G ++

回答

0

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

0

你确定你从QMainWindow继承,你有没有建立或继承这可能会影着名menuBar任何领域,你已经运行moc(或者有qmake为你做)?

该示例中的mainwindow.cpp,mainwindow.h,main.cppmenus.pro未修改,应该可以正常工作。

 
$ cd examples/mainwindows/menus/ 
$ ls 
main.cpp mainwindow.cpp mainwindow.h menus.pro 
$ qmake 
$ make 
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. -I. -o mainwindow.o 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. -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. -I. mainwindow.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. -I. -o moc_mainwindow.o moc_mainwindow.cpp 
g++ -Wl,--as-needed -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 
+0

我有qmake为我运行它。 qmake的-project 的qmake menus.pro 使 克++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/USR /共享/ QT4/mkspecs/Linux的克++ - 一世。 -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 – Scott 2009-06-18 22:37:38

+0

我认为ephemient是对的Scott。该错误消息意味着编译器认为'menuBar'不是一个函数,这几乎肯定意味着你有一个变量,成员或本地,它也被称为'menuBar',并阻止(遮蔽)同名函数。 – quark 2009-06-18 23:03:19