自定义Qt Designer插件
采用创建Qt Designer插件的方式来创建QwBattery类,并将其安装到UI设计器的组件面板里。该类的功能与上篇所讲的QmyBattery类功能一样。
要创建UI设计器插件类,单击Qt Create的“File”-> "New File Project"菜单,在出现的对话框里选择”其它项目“分组里的”Qt4设计师自定义控件“,会出现一个向导对话框,按向导逐步完成项目创建。
完成设置后生成的项目的文件组织结构如下图。
- untitled.pro是插件项目的项目文件,用于实现插件接口
- qwbatteryplugin.h和qwbatteryplugin.cpp是插件的头文件和实现文件
- icons.qrc是插件项目的资源文件
- qwbattery.pri是包含在untitled.pro项目中的一个项目文件,用于管理自定义组建类。
插件项目各文件的功能实现
1. QwBatteryPlugin类
qwbatteryplugin.h文件是对插件类QwBatteryPlugin的定义。完整代码如下
class QwBatteryPlugin : public QObject, public QDesignerCustomWidgetInterface
{Q_OBJECTQ_INTERFACES(QDesignerCustomWidgetInterface)
#if QT_VERSION >= 0x050000Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetInterface")
#endif // QT_VERSION >= 0x050000public:QwBatteryPlugin(QObject *parent = 0);bool isContainer() const;bool isInitialized() const;QIcon icon() const;QString domXml() const;QString group() const;QString includeFile() const;QString name() const;QString toolTip() const;QString whatsThis() const;QWidget *createWidget(QWidget *parent);void initialize(QDesignerFormEditorInterface *core);private:bool m_initialized;
};
untitled.pro 略
内置项目qwbattery.pri
项目里组件QwBattery类的定义与上篇QmyBattery类的定义基本一样,只是在声明这个类的时候需要加一个宏QDESIGNER_WIDGET_EXPORT,并使用Q_PROPERTY宏定义了一个属性powerLevel。QwBattery类的完整定义如下
class QDESIGNER_WIDGET_EXPORT QwBattery : public QWidget
{Q_OBJECT//自定义属性Q_PROPERTY(int powerLevel READ powerLevel WRITE setPowerLevel NOTIFY powerLevelChanged DESIGNABLE true)
public:QwBattery(QWidget *parent = 0);private:QColor mColorBack = Qt::white; //背景颜色QColor mColorBorder = Qt::black; //电池边框颜色QColor mColorPower = Qt::green; //电池柱颜色QColor mColorWarning = Qt::red; //电量短缺时的颜色int mPowerLevel = 60; //电量0-100int mWarnLevel = 20; //电量低警示阈值
protected:void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
public:void setPowerLevel(int pow); //设置当前电量int powerLevel();void setWarnLevel(int warn); //设置电量低阈值int warnLevel();QSize sizeHint(); //缺省大小
signals:void powerLevelChanged(int);
};
插件的编译与安装
在release模式下编译后,会产生qwbatteryplugin.dll和qwbatteryplugin.lib两个文件。
qwbatteryplugin.dll是插件的动态链接库文件,需要将此文件复制到Qt Creator的插件目录和Qt的插件目录下。
例如Qt安装在D:\Qt\Qt5.9.1目录下,需要复制的路径就是:
D:\Qt\Qt5.9.1\Tools\QtCreator\bin\plugins\designer
D:\Qt\Qt5.9.1\5.9.1\msvc2015\plugins\designer
重启Qt Creater,使用UI设计器窗口时,在左侧组件面板会看到增加了一个”My Widget"分组,里面有自定义的组件。
要让插件在Qt creator的UI设计器里正常显示,编译插件项目的编译器必须与编译Qt Creator的编译器一致。
debug和release模式要相对应,debug模式生成的lib和dll文件名后面会自动增加一个字母“d“
自定义Qt Designer插件相关推荐
- Qt Creator添加Qt Designer插件
Qt Creator添加Qt Designer插件 添加Qt Designer插件 查找Qt Designer插件 在macOS上配置Qt Designer插件 匹配的构建密钥 添加Qt Design ...
- 为Qt Designer创建自定义Widgets小部件
为Qt Designer创建自定义Widgets小部件 为Qt Designer创建自定义Widgets小部件 入门 在注释domXml()功能 插件要求 创建行为良好的小部件 编译和安装插件 一个简 ...
- 在Qt Designer中使用自定义Widgets小部件
在Qt Designer中使用自定义Widgets 在Qt Designer中使用自定义Widgets 处理自定义Widgets小部件 推广Widgets小部件 用户定义的自定义小部件 在Qt Des ...
- 如何让插件加载到Qt Designer
本文介绍的是如何让插件加载到Qt Designer,插件是一种遵循一定规范的应用程序接口编写出来的程序,对于Qt Designer不多做介绍了,先看内容吧. 本文介绍的是如何使自定义的插件加载到Qt ...
- qt designer使用自定义ui控件
文章目录 qt designer使用自定义ui控件 使用须知 插件应该存放的位置 Qt creator内置的designer 独立的designer 构建一个可使用的插件 Qt creator内置的d ...
- VS2008 Qt Designer 中自定义信号槽
一.Qt Designer自定义槽函数 发现:在VS2008 +Qt4.7 中打开ui文件,所用的英文QT Designer工具,没有转到槽函数的功能,不如QtCreator自带的QtDesigne ...
- qt designer加载自定义组件
目的:将Qt Designer中QLabel组件用自己实现的可以绘制图像ROI区域的ROILabel类代替 解决: 在自己的代码中实现ROILabel类,继承自QLabel # main.py cla ...
- 编写Qt Designer自定义控件(一)——如何创建并使用Qt自定义控件
在使用Qt Designer设计窗体界面时,我们可以使用Widget Box里的窗体控件非常方便的绘制界面,比如拖进去一个按钮,一个文本编辑器等.虽然Qt Designer里的控件可以满足我们大部分的 ...
- Qt Designer手册
Qt Designer手册 Qt Designer手册 Qt Designer手册 Qt Designer是用于使用Qt小部件设计和构建图形用户界面(GUI)的Qt工具.您可以按所见即所得(WYSIW ...
最新文章
- 杂谈--从基数评估来看问题1
- 任务间资源共享问题示例
- Java语言编程基础:数组
- 阿里云mysql 分布式_MySQL大型分布式集群
- linux内核重要结构体,Linux中list_head结构体相关 | 技术部落
- DTC跨境电商白皮书
- 前端智勇大闯关-第二季-第三题
- Mac新手比较容易犯的一些错误
- 国内语料库建设一览表
- java oa系统消息推送_第三方系统向泛微OA系统推送消息
- Javascript注释规范
- UML大作业【小型超市管理系统】
- 水星路由器设置显示服务器,新款水星无线路由器设置_新版水星(MERCURY)路由器设置教程-192路由网...
- 汽车零部件加工行业工业互联网智能工厂解决方案
- 书架html5,基于HTML5 Canvas的CSG构造实体几何书架
- CAD图纸如何转换成Word文档呢?
- 微信关注事件bug记录
- clickhouse列转行
- Android调用miui给权限,Android 11+MIUI12,APP任意获取用户隐私的路子被封死
- J0ker的CISSP之路:系统架构和设计之保护机制
热门文章
- 【原创】MarkDown-常用模板
- These modules have been removed from Maven structure: ‘xxx‘ Do you want them to be removed f
- OpenCV实战(3)——图像感兴趣区域
- 用IDEA创建java项目并跑起来
- 西门子828D数控系统主轴参数(不带编码器,只输出电压信号)
- 【DCIC2022】科技金融子赛道验证码识别0.65+ baseline
- WPS和office有什么不同
- 现提供“威力导演10极致版(多国语言含中文)+ 有效激活方法如下——
- 《强化学习周刊》第71期:ICAPS2023强化学习论文推荐、Meta:通过将语言模型与战略推理相结合,在外交游戏中发挥人的水平...
- 一鸣心所向学习力提升培训:前人智慧,后人总结!如何10倍提升自己学习能力!