“由于FindDialog类的定义包含Q_OBJECT宏,因而由qmake生成的makefile将会自动包含一些运行moc的规则……为了使moc能正常运行,必须把雷丁一从实现文件中分离出来并放到头文件中。由moc生成的代码会包含这个头文件,并会添加一些特殊的c++代码。……如果忘记使用了使用qmake重新生成makefile文件,并且也没有重新运行moc,那么连接程序就会报错,指出你声明了一些函数却没有实现他们。GCC会生成如finddialog.o:……undefined reference to……的错误,VC++输出error LINK2001。”
解决方法:重新运行qmake以生成新的makefile文件。
摘自《C++ GUI QT4编程(第二版)》Page14,Jasmin Blanchette、Mark Suummerfield,电子工业出版社。