Qt moc_包含文件问题

rwa*_*ace 0 c++ qt qt4

我正在尝试编译http://doc.trolltech.com/4.4/mainwindows-application.html上的基本教程程序并遇到问题.

按照教程程序的方式执行操作会产生编译错误:

In file included from debug\moc_mainwindow.cpp:10:
debug\../mainwindow.h:2: error: expected class-name before '{' token
debug\../mainwindow.h:5: error: ISO C++ forbids declaration of `Q_OBJECT' with no type
Run Code Online (Sandbox Code Playgroud)

问题是需要

#include <QtGui>
Run Code Online (Sandbox Code Playgroud)

教程程序将它放在mainwindow.cpp中,这是理想的方法,但它不会被复制到moc文件中.

如果我将它放入mainwindow.h中,一切正常,但在每个头文件中执行此操作都是不优雅的,并且一旦程序变大就会延长编译时间.

自教程编写以来,这是否发生了变化?(我正在使用最新的Qt 4.5.3,Windows SDK安装,从命令行编译.)我错过了什么,或者是否有任何已知的修复此问题?

Ste*_*fen 5

包括#include <QMainWindow>在标题中应该足够了.无论如何,这是必要的,因为QMainWindow是声明的类的基类mainwindow.h

即使在cpp文件中(当然除了简单的示例/测试程序之外),使用所有和厨房接收器头文件也不是一个好主意,因为它们会不必要地减慢编译速度.