日志
在QtCreator中使用自定义控件及在vs2010中集成qt
2011-11-10 19:44
这两天在学习制作自定义控件,使用提升法比较简章但是效果或者实用性不如插件法。在使用插件法时,遇到不少问题,几经周折,终于解决。总结如下。 我用的是Win7系统,基于Qt4.7.4版的Qt Creator2.3.0。 参考资料是: C++ GUI Qt4 编程(第二版) http://zhidao.baidu.com/question/194485353.html http://www.cnblogs.com/gamer/archive/2010/11/26/1888430.html http://hb.qq.com/a/20101217/001722.htm ----编写自定义控件 按照C++ GUI Qt4 编程(第二版) 中第五章的介绍,顺利完成了自定义控件Iconeditor的编译。然而在Qt Creator中的Designer界面,始终找不到该控件。后来在tools -> Form Editor -> About QT Designer Plugin中看到Expected build key “Windows msvc release full-config” got “Windows mingw release full-config”提示。在http://zhidao.baidu.com/question/194485353.html中获悉QtSDK用MingW编译,而其附带的QtCreator则是用msvc编译的,因而在QtDesigner中可以加载,但是在QtCreator中无法加载。后来在Ubuntu下测试就没有这个问题,编译好控件后直接就能在Designer的界面中找到新插件Iconeditor了。 解决方法用了Build the plugin with Visual Studio。 ----在vs中集成qt 要在vs下编译qt插件,就需要将qt集成到vs中去。关于这个,网上资料很多,如http://hb.qq.com/a/20101217/001722.htm之类,然而可能该方法讲的不够详细或者有什么其他未知问题,我在将qt集成到vs2010中的编译qt阶段遇到很多错误,不知如何解决,因而找其他方法。后来在 http://www.cnblogs.com/gamer/archive/2010/11/26/1888430.html找到了细节。 首先安装vs2010 然后安装qt Library qt-win-opensource-4.7.4-vs2008.exe 最后是qt的vs插件qt-vs-addin-1.1.9.exe 基本都是默认安装,一路下一步。 安装完后进入开始菜单Microsoft Visual Studio 2010,Visual Studio Tools,Visual Studio Command Prompt (2010),需要注意的是,这里面必须是使用Visual Studio Command Prompt (2010),不能使用CMD的Dos窗口。 打开后用cd C:\qt\4.7.4 进入Qt的安装目录。 运行配置命令 configure -platform win32-msvc2010 -debug-and-release,o(选择opensource模式)回车,Y(同意license)回车。需要十几分钟。 配置完成后运行nmake开始编译,需要三四个小时。我在执行这一步时,没报一个错。 最后输入 nmake clean清理中间文件,大约会清除掉5G的过程文件。 ----在vs环境下编译qt自定义插件 修改C:\Qt\4.7.4\bin目录下的qtvars.bat文件。 修改前是: @echo off rem rem This file is generated by the Qt installer rem echo Setting up a Qt environment... set QTDIR=C:\Qt\4.7.4 echo -- QTDIR set to C:\Qt\4.7.4 set PATH=C:\Qt\4.7.4\bin;%PATH% echo -- Added C:\Qt\4.7.4\bin to PATH set QMAKESPEC=win32-msvc2008 echo -- QMAKESPEC set to "win32-msvc2008" if not "%1"=="vsvars" goto ENDVSVARS call "C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat" :ENDVSVARS if not "%1"=="vsstart" goto ENDVSSTART call "C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat" devenv /useenv :ENDVSSTART 修改后为: @echo off rem rem This file is generated by the Qt installer rem echo Setting up a Qt environment... set QTDIR=C:\Qt\4.7.4 echo -- QTDIR set to C:\Qt\4.7.4 set PATH=C:\Qt\4.7.4\bin;%PATH% echo -- Added C:\Qt\4.7.4\bin to PATH set QMAKESPEC=win32-msvc2010 echo -- QMAKESPEC set to "win32-msvc2010" if not "%1"=="vsvars" goto ENDVSVARS call "C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\vsvars32.bat" :ENDVSVARS if not "%1"=="vsstart" goto ENDVSSTART call "C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\vsvars32.bat" devenv /useenv :ENDVSSTART 在开始,程序,Qt by Nokia v4.7.4 (VS2008 OpenSource)中,运行Qt 4.7.4 Command Prompt 然后进入自定义控件的工程文件目录下,运行qmake,nmake。将会在C:\Qt\4.7.4\plugins\designer中生成IconEditor.dll的插件。将其拷贝到C:\QtSDK\QtCreator\bin\designer目录下,再次打开QtCreator,就能在Designer中看到自定义的控件了。在使用该控件的工程中加入IconEditor.h,IconEditor.cpp文件即可使用。 |