采用创建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插件相关推荐

  1. Qt Creator添加Qt Designer插件

    Qt Creator添加Qt Designer插件 添加Qt Designer插件 查找Qt Designer插件 在macOS上配置Qt Designer插件 匹配的构建密钥 添加Qt Design ...

  2. 为Qt Designer创建自定义Widgets小部件

    为Qt Designer创建自定义Widgets小部件 为Qt Designer创建自定义Widgets小部件 入门 在注释domXml()功能 插件要求 创建行为良好的小部件 编译和安装插件 一个简 ...

  3. 在Qt Designer中使用自定义Widgets小部件

    在Qt Designer中使用自定义Widgets 在Qt Designer中使用自定义Widgets 处理自定义Widgets小部件 推广Widgets小部件 用户定义的自定义小部件 在Qt Des ...

  4. 如何让插件加载到Qt Designer

    本文介绍的是如何让插件加载到Qt Designer,插件是一种遵循一定规范的应用程序接口编写出来的程序,对于Qt Designer不多做介绍了,先看内容吧. 本文介绍的是如何使自定义的插件加载到Qt ...

  5. qt designer使用自定义ui控件

    文章目录 qt designer使用自定义ui控件 使用须知 插件应该存放的位置 Qt creator内置的designer 独立的designer 构建一个可使用的插件 Qt creator内置的d ...

  6. VS2008 Qt Designer 中自定义信号槽

    一.Qt Designer自定义槽函数 发现:在VS2008 +Qt4.7  中打开ui文件,所用的英文QT Designer工具,没有转到槽函数的功能,不如QtCreator自带的QtDesigne ...

  7. qt designer加载自定义组件

    目的:将Qt Designer中QLabel组件用自己实现的可以绘制图像ROI区域的ROILabel类代替 解决: 在自己的代码中实现ROILabel类,继承自QLabel # main.py cla ...

  8. 编写Qt Designer自定义控件(一)——如何创建并使用Qt自定义控件

    在使用Qt Designer设计窗体界面时,我们可以使用Widget Box里的窗体控件非常方便的绘制界面,比如拖进去一个按钮,一个文本编辑器等.虽然Qt Designer里的控件可以满足我们大部分的 ...

  9. Qt Designer手册

    Qt Designer手册 Qt Designer手册 Qt Designer手册 Qt Designer是用于使用Qt小部件设计和构建图形用户界面(GUI)的Qt工具.您可以按所见即所得(WYSIW ...

最新文章

  1. 杂谈--从基数评估来看问题1
  2. 任务间资源共享问题示例
  3. Java语言编程基础:数组
  4. 阿里云mysql 分布式_MySQL大型分布式集群
  5. linux内核重要结构体,Linux中list_head结构体相关 | 技术部落
  6. DTC跨境电商白皮书
  7. 前端智勇大闯关-第二季-第三题
  8. Mac新手比较容易犯的一些错误
  9. 国内语料库建设一览表
  10. java oa系统消息推送_第三方系统向泛微OA系统推送消息
  11. Javascript注释规范
  12. UML大作业【小型超市管理系统】
  13. 水星路由器设置显示服务器,新款水星无线路由器设置_新版水星(MERCURY)路由器设置教程-192路由网...
  14. 汽车零部件加工行业工业互联网智能工厂解决方案
  15. 书架html5,基于HTML5 Canvas的CSG构造实体几何书架
  16. CAD图纸如何转换成Word文档呢?
  17. 微信关注事件bug记录
  18. clickhouse列转行
  19. Android调用miui给权限,Android 11+MIUI12,APP任意获取用户隐私的路子被封死
  20. J0ker的CISSP之路:系统架构和设计之保护机制

热门文章

  1. 【原创】MarkDown-常用模板
  2. These modules have been removed from Maven structure: ‘xxx‘ Do you want them to be removed f
  3. OpenCV实战(3)——图像感兴趣区域
  4. 用IDEA创建java项目并跑起来
  5. 西门子828D数控系统主轴参数(不带编码器,只输出电压信号)
  6. 【DCIC2022】科技金融子赛道验证码识别0.65+ baseline
  7. WPS和office有什么不同
  8. 现提供“威力导演10极致版(多国语言含中文)+ 有效激活方法如下——
  9. 《强化学习周刊》第71期:ICAPS2023强化学习论文推荐、Meta:通过将语言模型与战略推理相结合,在外交游戏中发挥人的水平...
  10. 一鸣心所向学习力提升培训:前人智慧,后人总结!如何10倍提升自己学习能力!