用于扩展Qt本身的插件(上)

news2024/11/20 2:33:06

Qt自身插件

  • 引言
  • 示例
    • 插件与应用插件的程序作为整体
    • 插件和应用插件的程序单独存在
    • 实现插件
    • 编写测试插件的程序
    • 应用插件
    • 运行结果

引言

用于扩展qt自身的插件按照我的理解分为两种:
1. 直接扩展Qt自身,无需在QtCreator的设计器中加载;
2. 扩展Qt自身,同时需要在QtCreator的设计器中加载,类似于自定义控件,可像Qt的基本控件那般在设计器中直接展示,拖拽使用,具有属性,信号槽等。

本文记录扩展Qt自身的插件,但不用在QtCreator的设计器中加载的插件。

示例

本示例时基于样式进行扩展,自定义自己的样式种类。
有两种创建项目的方式,一种是将插件与使用插件的程序分别作为子项目,整体包含在一个项目文件夹中;另一种是将插件和使用插件的程序分别作为单独的项目。
下面分别记录下创建过程。

插件与应用插件的程序作为整体

器效果就是这样:
在这里插入图片描述
插件Plugin与StyleWindow分别作为StylePlugin3的子项目,两个位于用一个文件夹StylePlugin3下。方便管理。
其创建是这样的:
在QtCreator中点击菜单栏的文件-》新项目-》其他项目-》子目录项目。弹出:
在这里插入图片描述
输入项目名称StylePlugin3,选择合适的创建路径,点击下一步按钮。弹出:
在这里插入图片描述
选择想要使用的编译器的种类,注意与使用该插件的应用程序的编译器保持一致即可。我这里选择的是Qt6.6.0 MSVC2019 64bit,点击下一步按钮,弹出弹窗后,点击完成&添加子项目按钮,弹出新建子项目弹窗:
在这里插入图片描述
选择其它项目-》Qt4设计师自定义控件,点击选择按钮。弹出:
在这里插入图片描述
输入名称Plugin,创建路径选择默认的路径,点击下一步按钮。弹出弹窗后,在下面的控件类下面输入类名:SimpleStyle。注意类名采用驼峰命名。默认是选择包含项目的,需手动勾选创建代码框架,会生成对应的下图中所示的系列文件名,此时可在图标文件项点击后面的浏览按钮选择自己要添加的图标图片。
在这里插入图片描述
也可在说明项中输入相应的组名,工具提示,已经控件是否是一个容器(即控件中是否可以放入、拖入其他控件)。在这里插入图片描述
也可编写属性。
在这里插入图片描述
之后点击下一步按钮。这里我没有修改属性,也没有该说明,然后点击下一步按钮,一路操作,直到点击完成按钮。
此时项目的结构图如下:
在这里插入图片描述
插件项目Plugin创建好之后,接下来创建使用插件的应用程序。
在项目文件夹StylePlugin3上右键,弹出菜单中选择添加子项目-》Application(Qt)->Qt Widget Application,创建基于Qt的应用程序。
在这里插入图片描述
后面的步骤就不用说了,项目名为StyleWindow,路径采用默认的就行,基类为QWidget,采用默认声的Widget就行,不要勾选ui,该项目不用ui界面,一路操作,直到完成。
注意编译器选择与插件项目的编译器相同的编译器。

此时项目结构如下:
在这里插入图片描述
至此第一种将插件与使用插件的应用程序放在同一个目录下的项目已经创建完成。

插件和应用插件的程序单独存在

另一种将插件与使用插件的应用程序各自作为一个项目的创建如下。
首先打开QtCreator,选择菜单栏的文件-》新建项目-》其它项目->子目录项目,点击选择按钮。弹出:
在这里插入图片描述
输入项目名称StylePlugin,点击下一步按钮。弹出窗口中选择你想使用的编译器,点击下一步按钮,弹出弹窗中点击完成&添加子项目。弹出:
在这里插入图片描述
选择其他项目-》Qt4设计师最定义控件,点击选择按钮。弹出:
在这里插入图片描述
输入名称Plugin,点击下一步按钮。弹出:
在这里插入图片描述
在控件类下面输入类名SimplePlugin,勾选代码框架,点击下一步按钮。
在这里插入图片描述
一路下一步,直到完成。
项目结构如下:
在这里插入图片描述
这时插件创建的过程,接下来创建使用插件的应用程序。
其实质就是创建一个基于Qt的应用程序,菜单栏中点击文件-》新建项目-》Qt Application->Qt Widget Application,后面的就不细述了,就是创建一个基于Qt的应用程序。
创建好之后,项目结构如下(项目名字自己起就行):
在这里插入图片描述
至此,将插件与使用插件的应用程序分别创建完成。

实现插件

项目创建好之后,接下来实现插件类中代码编写。
在按照第一种方式创建好的项目StylePlugin3中:
在这里插入图片描述
StylePlugin3.pro

TEMPLATE = subdirs

SUBDIRS += \
    Plugin \
    StyleWindow

Plugin.pro

CONFIG      += plugin debug_and_release
TARGET      = $$qtLibraryTarget(simplestyleplugin3)
TEMPLATE    = lib

HEADERS     = simplestyleplugin.h
SOURCES     

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1593997.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【SpringBoot整合系列】SpringBoot 实现大文件分片上传、断点续传及秒传

目录 功能介绍文件上传分片上传秒传断点续传 相关概念相关方法大文件上传流程前端切片处理逻辑后端处理切片的逻辑流程解析 后端代码实现功能目标1.建表SQL2.引入依赖3.实体类4.响应模板5.枚举类6.自定义异常7.工具类8.Controller层9.FileService10.LocalStorageService11.File…

设计模式代码实战-工厂模式

1、问题描述 小明家有两个工厂,一个用于生产圆形积木,一个用于生产方形积木,请你帮他设计一个积木工厂系统,记录积木生产的信息。 输入案例 3 Circle 1 Square 2 Circle 1 2、工厂模式 将产品的创建过程封装在⼀个⼯⼚类中&am…

变换时光:用MagicTime生成落叶纷飞的视频

简介 MagicTime: https://huggingface.co/spaces/BestWishYsh/MagicTime 是一款基于时间延迟视频生成模型的变体人工智能工具,它可以让您将静止图像转换为动态视频,赋予图像生命。 今天,我们将利用MagicTime来生成一片落叶纷飞的景象&#…

【从浅学到熟知Linux】程序地址空间分布与进程地址空间详谈(含虚拟地址到物理地址的映射)

🏠关于专栏:Linux的浅学到熟知专栏用于记录Linux系统编程、网络编程等内容。 🎯每天努力一点点,技术变化看得见 文章目录 程序地址空间概览进程地址空间 程序地址空间概览 我们在执行一个C语言程序时,它包含代码、变量…

配置DHCP服务器实现为动态客户端和静态客户端分配不同网络参数

相关学习推荐:什么是DHCP?为什么要使用DHCP? 华为HCIP课程【视频教程】:华为HCIP必考题:DHCP协议原理与配置 组网需求 如图1所示,Router作为企业出口网关,PC和IP Phone为某办公区办公设备。为了方便统一管…

记一次Oracle DG备库实例宕分析

一、问题现象 同事反馈国外点在国内的XXX备库实例宕,尝试将该实例重启,结果重启报如下错误,未能正常启动该数据库。 Standby crash recovery failed to bring standby database to a consistent point because needed redo hasnt arrived yet…

全国贫困县DID数据(2008-2022年)

数据来源:国W院扶贫开发领导小组办公室 时间跨度:2008-2022年 数据范围:各县域 数据指标 年份 县域名称 所属地市 所属省份 县域代码 是否贫困县(是为1,否为0) 参考文献: [1]马雯嘉,吴茂祯.从全面脱贫到乡村振兴…

ChatGPT在线网页版

ChatGPT镜像 今天在知乎看到一个问题:“平民不参与内测的话没有账号还有机会使用ChatGPT吗?” 从去年GPT大火到现在,关于GPT的消息铺天盖地,真要有心想要去用,途径很多,别的不说,国内GPT的镜像…

FL Studio808鼓音在哪 FL Studio怎么让音乐鼓点更有力 FL Studio教程

FL Studio808鼓音在哪?808是一款电鼓机的名称,它发出的声音也被称之为808鼓,通常我们可以安装鼓机插件来使用,但FL Studio中自带的也有808鼓的采样音频。FL Studio怎么让音乐鼓点更有力?让鼓点更有力要从EQ均衡器、压缩…

Pandas学习笔记——第二弹

在用正则表达式对数据进行filtering的时候,出现字符串和整数变量不匹配的问题,例如: 给3加上引号就好了:3 但是为什么10000不需要加引号,而3需要呢?这是因为他们的变量类型不一样的,于是总结一下…

分布式ID的方案和架构

超过并发,超高性能分布式ID生成系统的要求 在复杂的超高并发、分布式系统中,往往需要对大量的数据和消息进行唯一标识如在高并发、分布式的金融、支付、餐饮、酒店、电影等产品的系统中,数据日渐增长,对数据分库分表后需要有一个唯…

常见公开可用的数据集——对算法的鲁棒性和性能进行全面评估

提供了一组公开可用的数据集,这些数据集包含不同的图像变换,允许对算法的鲁棒性和性能进行全面评估。特征匹配实验中使用的数据集汇总信息如表2所示,图14为除YFCC100M外各数据集的样例图像。 Proj:202404 CMC-R.W Citavi (1) VGG [115]: This dataset comprises 40 pairs…

一些 VLP 下游任务的相关探索

目录 一、Image-Text Retrieval (ITR , 图像文本检索) 任务目的: 数据集格式 训练流程 evaluation流程 实际使用推测猜想 二、Visual Question Answering (VQA , 视觉问答) 任务目的 数据集格式 训练流程 demo以及评估流…

MySQL——链表

主键:非空 唯一(针对整列数据而言) 为了方便管理一般主键都是设置为自增 外键:一张表中的一列的值是另一张表的主键,使用外键建立两张数据表的数据关系 一、两张表连接 将两张表格拼接成一个表 1、格式:s…

AcWing 796. 子矩阵的和——算法基础课题解

AcWing 796. 子矩阵的和 题目描述 输入一个 n 行 m 列的整数矩阵,再输入 q 个询问,每个询问包含四个整数 x1,y1,x2,y2,表示一个子矩阵的左上角坐标和右下角坐标。 对于每个询问输出子矩阵中所有数的和。 输入格式 第一行包含三个整数 n&…

前后端分离的Java医院云HIS信息管理系统源码(LIS源码+电子病历源码)

HIS系统采用主流成熟技术开发,软件结构简洁、代码规范易阅读,SaaS应用,全浏览器访问前后端分离,多服务协同,服务可拆分,功能易扩展。多医院、多集团统一登录患者主索引建立、主数据管理,统一对外…

ClickHouse--16--普通函数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、日期函数1、时间或日期截取函数(返回非日期)2、时间或日期截取函数(返回日期)3、日期或时间日期生成函数 二、类…

Arthas实战教程:定位Java应用CPU过高与线程死锁

引言 在Java应用开发中,我们可能会遇到CPU占用过高和线程死锁的问题。本文将介绍如何使用Arthas工具快速定位这些问题。 准备工作 首先,我们创建一个简单的Java应用,模拟CPU过高和线程死锁的情况。在这个示例中,我们将编写一个…

算法刷题day43

目录 引言已知信息一、公约数二、序列的第k个数三、越狱四、等差数列五、公约数六、质因数个数七、完全平方数八、阶乘分解 引言 今天复习的是快速幂的剩余问题、质数、约数的问题,发现其实不难,都是在基础的模板上进行变化,但是不好想&…

RobotFramework功能自动化测试框架基础篇

概念 RobotFramework是什么? Robot Framework是一款python编写的功能自动化测试框架。具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试…