我需要在MFC应用程序下显示属性浏览器。
我尝试组合并编译两个
的解决方案http://qt.nokia.com/products/appdev/add-on-products/catalog/4/Windows/qtwinmigrate/ http://qt.nokia.com/products/appdev/add-on-products/catalog/4/Widgets/qtpropertybrowser/
我正在使用VC2009,QT 2009.04和Visual Studio Add-On 1.1.1
请注意,在我的机器下,我可以单独成功编译它们。
我复制,并添加
中的所有现有CPP和HEADER文件qtpropertybrowser-2.5-opensource\src
到
qtwinmigrate-2.8-opensource\examples\qtdll
以下是我的新项目在屏幕截图中的样子(qtwinmigrate - 最右边的窗口)
(来源:googlepages.com)
qtpropertybrowser,是我能够编译的项目没有问题:
1>------ Rebuild All started: Project: simple, Configuration: Release Win32 ------
1>Deleting intermediate and output files for project 'simple', configuration 'Release|Win32'
1>Moc'ing qtpropertybrowserutils_p.h...
1>RCC ..\..\src\qtpropertybrowser.qrc
1>MOC ..\..\src\qtvariantproperty.h
1>MOC ..\..\src\qttreepropertybrowser.h
1>MOC ..\..\src\qtpropertymanager.h
1>MOC ..\..\src\qtpropertybrowser.h
1>MOC ..\..\src\qtgroupboxpropertybrowser.h
1>MOC ..\..\src\qteditorfactory.h
1>MOC ..\..\src\qtbuttonpropertybrowser.h
1>Compiling...
.
.
.
1>Compiling...
1>moc_qtpropertybrowserutils_p.cpp
1>Linking...
1>Embedding manifest...
然而,当来构建qtwinmigrate的修改版本时(qtwinmigrate的原始版本能够编译没有问题)
1>------ Rebuild All started: Project: qtdialog, Configuration: Release Win32 ------
1>Deleting intermediate and output files for project 'qtdialog', configuration 'Release|Win32'
1>Moc'ing qtpropertybrowserutils_p.h...
1>Moc'ing qteditorfactory.h...
1>Moc'ing qtvariantproperty.h...
1>Moc'ing qttreepropertybrowser.h...
1>Moc'ing qtpropertymanager.h...
1>Moc'ing qtpropertybrowser.h...
1>Moc'ing qtgroupboxpropertybrowser.h...
1>Moc'ing qtbuttonpropertybrowser.h...
1>Moc'ing qwinwidget.h...
1>Moc'ing qwinhost.h...
1>Compiling...
.
.
.
1>Compiling...
1>moc_qtpropertybrowserutils_p.cpp
1>moc_qteditorfactory.cpp
1>.\Release\moc_qteditorfactory.cpp(74) : error C2027: use of undefined type 'QtSpinBoxFactoryPrivate'
1> c:\documents and settings\yan-cheng.cheok\my documents\downloads\qtwinmigrate-2.8-opensource\qtwinmigrate-2.8-opensource\examples\qtdll\release\../../../lib/qtpropertybrowser-2.5-opensource/src/qteditorfactory.h(97) : see declaration of 'QtSpinBoxFactoryPrivate'
1>.\Release\moc_qteditorfactory.cpp(74) : error C2227: left of '->slotPropertyChanged' must point to class/struct/union/generic type
我的问题是
答案 0 :(得分:0)
看起来你的两个vcproj文件没有相同的“moc”属性......它会导致使用moc的类的奇怪行为......
您是如何在第二个项目中生成vcproj文件的?
您是从PRO文件构建vcproj还是直接在VS中添加现有的cpp / h文件? 如果您从示例的PRO文件构建第一个示例,然后通过VS添加cpp文件在另一个vcproj中复制,那么moc属性可能出错......
在你的vcproj文件中,尝试查找“moc_”并查找两个文件之间的差异......我认为它会为你找到问题根源的进一步步骤......
我希望它有所帮助...
答案 1 :(得分:0)
1)在Visual Studio 2008下,转到Qt - >打开Qt项目文件(.pro),打开 qtpropertybrowser.pro
2)转到“简单”属性,在Build Events - >下;预建活动,输入 以下命令:
moc ..\..\src\qttreepropertybrowser.cpp > ..\..\src\qttreepropertybrowser.moc
moc ..\..\src\qtpropertymanager.cpp > ..\..\src\qtpropertymanager.moc
moc ..\..\src\qteditorfactory.cpp > ..\..\src\qteditorfactory.moc
3)在C / C ++下 - >其他包含目录,请输入以下路径:
..\..\lib\qtwinmigrate\src
4)一般情况下 - >配置类型,更改为动态库(.dll)
5)在链接器下 - >一般 - >输出文件,更改为\ qtdialog.dll
6)从简单项目中排除原始main.cpp。从
添加main.cpp..\..\lib\qtwinmigrate\examples\qtdll
7)从
添加所有3个cpp文件和3个头文件..\..\lib\qtwinmigrate\src
8)全部建立。将生成qtdialog.dll。
9)打开\ lib \ qtwinmigrate \ examples \ mfc \ step1。建立所有。
10)移动qtdialog.dll与step1生成的exe相同的目录。运行该应用程序。