代码之家  ›  专栏  ›  技术社区  ›  Scott

Qt menuBar()错误

  •  0
  • Scott  · 技术社区  · 17 年前

    我正在学习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. -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
    

    有人知道我怎么解决这个问题吗?

    2 回复  |  直到 17 年前
        1
  •  0
  •   ephemient    17 年前

    你确定你继承了 QMainWindow ,您尚未创建或继承任何可能会影响名称的字段 menuBar ,你已经跑了 moc (或 qmake 这是为你做的吗?

    这个 mainwindow.cpp , mainwindow.h , main.cpp 和 menus.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
    
        2
  •  0
  •   Scott    17 年前

    由于某些原因,QMainWindow设置不正确。这是通过调用基类构造函数修复的。