1.环境
1.vs2010
2.先安装Qt5.4.0(qt-opensource-windows-x86-msvc2010_opengl-5.4.0.exe)
3.再安装qt-vs-addin-1.2.4-opensource.exe
2.无UI的自定义控件及使用
2.1新建一个Qt Designer Plugin工程
工程名字为keyboard,类名Keyboard,插件类名:KeyboardPlugin
2.2 修改keyboardplugin.cpp
将
QString KeyboardPlugin::includeFile() const
{
return "keyboard.h";
}
改为
QString KeyboardPlugin::includeFile() const
{
return "../keyboard/keyboard.h";
}
否则在使用此插件时,会报错:找不到头文件keyboard.h
2.3将生成的dll拷贝至qt安装目录下的..\ designer下
copy "$(TargetDir)$(TargetName).dll"D:\Install\Qt\Qt5.4.0\5.4\msvc2010_opengl\plugins\designer
2.5重新打开Qt Designer,检验插件是否生成
点击帮助->关于插件,如下图所示。
左下角,显示如下如所示。
3.使用
3.1新建测试工程
打开vs2010,新建一个工程Qt Application,名字为testPlugin,继承自QMainWindow。此工程用来测试自定义控件。
3.2 测试工程缺少lib库
解决方法
右键点击测试工程,选择Propertities->VC++Directions->Library Directories,如下图说是。
debug添加:D:\Practise\QT\vs2010\qt_learn1\Win32\Debug
release添加:D:\Practise\QT\vs2010\qt_learn1\Win32\Release
解决办法
在头文件keyboard.h的类声明前加入宏:QDESIGNER_WIDGET_EXPORT,
加入头文件#include <QtDesigner/QDesignerExportWidget>,伪代码如下
...
#include <QtDesigner/QDesignerExportWidget>
...
class QSignalMapper;
class QDESIGNER_WIDGET_EXPORTKeyboard : publicQWidget
{
......
}
3. 有UI的自定义控件及使用
3.1删除keyboard.h和keyboard.cpp
在“2. 无UI的自定义控件及使用”的基础上,删除这两个文件。
3.2 添加Qt5GuiClass类Keyboard
右键keyboard工程->Add->Class,选择Qt5GuiClass,如下图所示。
3.3使用
3.3.1 不认识头文件ui_keyboard.h
解决方法
改
#include "ui_keyboard.h"
为:
#include "../keyboard/GeneratedFiles/ui_keyboard.h"