自定义的插件如何加载到Qt Designer中(图)
最近小弟在学QT,参考的书是《C++ GUI QT4编程》第二版,在学习,5.3节的时侯,出现了问题。这一节是讲在QT设计师中集成自定义窗口部件的。上面讲了我用的那本书,这本书是有例程的,我在运行第5节的程序时,竟然出错了!
基本步骤如下:
第一步,需要创建自定义窗口部件。
可以对一个已经存在的窗口部件进行子类化也可以直接对Qwidget 进行子类化,就可以创建自定义的窗口部件。我是采用子类化Qwidget的方法创建的窗口部件。这样就创建了一个新窗体,可以在里面设置一些信号和槽的连接。注意这个窗体的实现代码必须在编译器下调试无误。这个窗口完成了就要进行下一步了。
第二步,在Qt设计师中集成自定义的窗口部件。
我采用的是插件法,这种方法需要创建一个插件库,Qt设计师可以在运行时加载这个库,并且可以利用该库创建窗口部件的实例。它是对QdesignerCustomWidgetInte易做图ce进行子类化,只要再重新实现一些虚函数就行。注意,在实现该插件类的源文件末尾,必须使用Q_EXPORT_PLUGIN2()宏,从而可以在Qt设计师中使用这个插件。
第三步,创建该插件的 .pro 文件。
需要注意文件中的HEADES和SOURCES这两个变量的路径一定要设置正确。
第四步,运行qmake命令。
把这两个类的头文件,源文件及构建该插件 .pro 文件共5个文件拷贝到同一文件夹下。在Qt的命令提示符窗口中输入qmake 或 qmake –project后回车,此时会生成三个Makefile文件和两个文件夹。此时debug文件夹是空的。
第五步,执行nmake命令。
执行完后会在当前目录生成一个.pdb文件,并且在debug目录中生成一些moc,dll及lib等文件。
只要不提示错误最后一般都能把自定义的插件加载到Qt Designer中。可以到Qt Designer里面去查找。
上面参考了一篇文章,基本上和那本书上讲的没什么区别,而我在运行程序的时侯,qmake -project 和qmake 都没有问题,可是make 却报错,不能在设计师软件中看到自定义的插件。Setting up a MinGW/Qt only environment...
-- QTDIR set to C:\Qt\4.3.2
-- PATH set to C:\Qt\4.3.2\bin
-- Adding C:\MinGW\bin to PATH
-- Adding C:\WINDOWS\System32 to PATH
-- QMAKESPEC set to win32-g++
C:\Qt\4.3.2>cd examples_hps
C:\Qt\4.3.2\examples_hps\chap05\iconeditorplugin 的目录
2011-05-07 21:22 <DIR> .
2011-05-07 21:22 <DIR> ..
2006-02-20 18:34 1,012 iconeditorplugin.cpp
2011-05-07 21:24 441 iconeditorplugin.pro
2006-02-20 18:34 105 iconeditorplugin.qrc
2006-02-20 18:34 574 iconeditorplugin.h
2011-05-07 21:22 <DIR> images
4 个文件 2,132 字节
3 个目录 4,549,361,664 可用字节
C:\Qt\4.3.2\examples_hps\chap05\iconeditorplugin>qmake
C:\Qt\4.3.2\examples_hps\chap05\iconeditorplugin>make
mingw32-make -f Makefile.Debug all
mingw32-make[1]: Entering directory `C:/Qt/4.3.2/examples_hps/chap05/iconeditorp
lugin'
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -
DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..
\..\include\QtCore" -I"..\..\..\include\QtCore" -I"..\..\..\include\QtGui" -I"..
\..\..\include\QtGui" -I"..\..\..\include" -I"." -I"c:\Qt\4.3.2\include\ActiveQt
" -I"tmp\moc\debug_shared" -I"." -I"..\..\..\mkspecs\win32-g++" -o tmp\obj\debug
_shared\iconeditorplugin.o iconeditorplugin.cpp
In file included from iconeditorplugin.cpp:4:
iconeditorplugin.h:4:42: QDesignerCustomWidgetInte易做图ce: No such file or directo
ry
In file included from iconeditorplugin.cpp:4:
iconeditorplugin.h:8: error: expected class-name before '{' token
iconeditorplugin.cpp: In member function `QIcon IconEditorPlugin::icon() const':
iconeditorplugin.cpp:27: error: return type `struct QIcon' is incomplete
iconeditorplugin.cpp:28: error: invalid use of undefined type `struct QIcon'
../../../include/QtGui/../../src/gui/kernel/qwidget.h:89: error: forward declara
tion of `struct QIcon'
mingw32-make[1]: *** [tmp\obj\debug_shared\iconeditorplugin.o] Error 1
mingw32-make[1]: Leaving directory `C:/Qt/4.3.2/examples_hps/chap05/iconeditorpl
ugin'
mingw32-make: *** [debug-all] Error 2
C:\Qt\4.3.2\examples_hps\chap05\iconeditorplugin>
帮分析一下,谢谢各位,因为我真的还是初学C++,希望帮忙! --------------------编程问答-------------------- 帮下啊,上面的分析的不太清楚哦1 --------------------编程问答-------------------- 第一个错误就告诉你缺少头文件。 --------------------编程问答-------------------- Q_INTERFACES(QDesignerCustomWidgetInte易做图ce) 我的这句出错,说是未定义的接口,这个接口是自带的一个类啊,您知道什么原因吗,我才看了不久,还请传授一下经验。急。。 --------------------编程问答-------------------- 自定义的插件如何加载到Qt Designer中 --------------------编程问答-------------------- 重点在那个.pro文件要和书上的一致,即要包含前面写的iconeditor.h,iconeditor.cpp,
就是直接用书上的.pro,在直接qmake -o Makefile; make --------------------编程问答-------------------- 要看你是啥版本的Qt,Qt5.0及以上的说明文件说的相当不清楚,我做了一个实验,单个控件没问题。跟4.X的Qt差别还是不小。4.X的还是一个模式的,比较简单
补充:移动开发 , Qt