0

我正在学习 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++ 添加了完整的错误消息

4

2 回答 2

0

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

, mainwindow.cpp, mainwindow.h, main.cppand menus.profrom the example,未修改,应该可以正常工作。

$ 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
于 2009-06-18T22:06:21.827 回答
0

For some reason QMainWindow was not getting setting up correctly. This was fixed by calling the base class constructor.

于 2009-06-19T01:49:15.670 回答