2014-02-18 81 views
4

我在我的项目中使用了QtPropertyBrowser,它基于ObjectController示例。我使用Visual Studio 2010作为IDE和Qt 5.2.1(我可以重现Qt 4.7和4.8的错误)。将moc_objectcontroller.cpp添加到Visual Studio源代码树时出现QtPropertyBrowser编译器错误

全部moc_*.cpp文件被添加到源树GeneratedFiles\$(Configuration)。不幸的是,这会导致以下编译器错误:

2> moc_objectcontroller.cpp 
    2> GeneratedFiles\Release\moc_objectcontroller.cpp(70): error C2027: use of undefined type 'ObjectControllerPrivate' 
    2> c:\***\guimain\generatedfiles\release\../../src/objectcontroller.h(45) : see declaration of 'ObjectControllerPrivate' 
    2> GeneratedFiles\Release\moc_objectcontroller.cpp(70): error C2227: left of '->slotValueChanged' must point to class/struct/union/generic type 

当我从源代码树中删除moc_objectcontroller.cpp(并没有实际删除磁盘上的文件),该项目构建并运行良好。所有其他moc_*.cpp文件已将置于源代码树中,否则该项目将无法链接。

有人知道,为什么编译器会产生错误?有没有解决方法/你知道的解决方法?

编辑:上请求相应的码数:

+1

在我的MSVC2012和Qt 5.1.0中正常工作。请显示'moc_objectcontroller.cpp'文件的内容,并提供指向您使用的示例的确切版本的链接。也可能是你的Qt安装有问题,请尝试重新安装。 –

+0

@PavelStrakhov:谢谢你的评论。确切的代码可以在添加的链接中找到。我已经尝试过Qt的多个版本,都是从源代码构建的并安装的。同样在MSVC2012中(VC2010模式),我得到相同的编译器错误。 –

回答

4

它可能是你的

ObjectControllerPrivate *d_ptr; 

QScopedPointer<QObjectData> d_ptr; 
从QWidget的/ QObject的 继承应将d_ptr成员变量

冲突。

重命名它,然后重试。

+0

这似乎工作。我将在接下来的两个小时内测试另一个系统,运行另一个Qt版本和MSVC2010。当然,我会在成功的时候给予答案。谢谢! –

相关问题