我正在关注Qt's guide使用QPushButton
。
我完全按照指南的建议,但我收到了编译错误:
./src/mainwindow.o: In function `MainWindow::MainWindow(QWidget*)':
mainwindow.cpp:(.text+0x1d): undefined reference to `vtable for MainWindow'
./src/mainwindow.o:mainwindow.cpp:(.text+0x25): more undefined references to `vtable for MainWindow' follow
collect2: error: ld returned 1 exit status
make: *** [HelloWorldProj] Error 1
我尝试添加析构函数:
~MainWindow(){};
但问题仍然存在。
我没有声明虚函数,除了QMainWindow
中的一个函数(我继承的类):
virtual QMenu *createPopupMenu();
这应该在我班上定义吗?
答案 0 :(得分:4)
您需要在我们的CMake文件中将CMAKE_AUTOMOC
设置为ON
。
# Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON)
“ AUTOMOC目标属性控制cmake是否检查目标中的C ++文件以确定它们是否需要运行moc,并创建在适当的时间执行moc的规则。” -Reference
答案 1 :(得分:3)
尝试在项目上运行qmake,然后进行重建。
您的示例已损坏(如果可能,我会尽快更新)
创建一个空文件并将其命名为PushButtonExample.pro并添加以下内容:
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = PushButtonExample
TEMPLATE = app
SOURCES += main.cpp \
mainwindow.cpp
HEADERS += mainwindow.h
然后在该文件上运行qmake
,然后make
。
我还建议您下载Qt Creator并在构建Qt项目时将其用作IDE。大多数Qt安装也安装了Qt Creator IDE,它有一些很好的例子和向导来创建新项目。
确保所有4个文件都在同一个文件夹中
main.cpp
mainwindow.cpp
mainwindow.h
PushButtonExample.pro
在命令行中,导航到该文件夹并运行qmake
qmake PushButtonExample.pro
这应该在同一个文件夹中创建以下文件
Makefile
然后运行make
这应该构建示例,最后运行应用程序:
./PushButtonExample
(我也在更新维基页面)