qt介绍自定义插件 三

news/2025/3/19 6:34:32/

 

代码结构

主要编写这两个文件

#ifndef TBATTERY_H
#define TBATTERY_H#include <QWidget>
#include <QtUiPlugin/QDesignerExportWidget>
class QDESIGNER_WIDGET_EXPORT TBattery : public QWidget
{Q_OBJECT
private:QColor colorBackground=Qt::white;QColor colorBorder=Qt::black;QColor colorPower=Qt::green;QColor colorWarning=Qt::red;int m_powerLevel=60;//当前电量,0-100int m_warnLevel=20;
public:explicit TBattery(QWidget *parent = nullptr);int powerLevel() const;void setPowerLevel(int newPowerLevel);int warnLevel() const;void setWarnLevel(int newWarnLevel);signals:// QWidget interface
protected:virtual void paintEvent(QPaintEvent *event) override;
};#endif // TBATTERY_H
#include "tbattery.h"
#include <QPainter>
#include <QPaintEvent>
void TBattery::paintEvent(QPaintEvent *event)
{QPainter painter(this);QRect rect(0,0,width(),height());painter.setViewport(rect);//视口,绝对坐标painter.setWindow(0,0,120,50);//窗口,逻辑坐标(映射到上面的坐标)painter.setRenderHint(QPainter::Antialiasing);painter.setRenderHint(QPainter::TextAntialiasing);//绘制电池QPen pen(colorBorder);pen.setWidth(2);pen.setStyle(Qt::SolidLine);pen.setCapStyle(Qt::FlatCap);pen.setJoinStyle(Qt::BevelJoin);painter.setPen(pen);QBrush brush(colorBackground);brush.setStyle(Qt::SolidPattern);painter.setBrush(brush);rect.setRect(1,1,109,48);painter.drawRect(rect);//绘制边框brush.setColor(colorBorder);painter.setBrush(brush);rect.setRect(110,15,10,20);painter.drawRect(rect);//绘制正极if(m_powerLevel>m_warnLevel){brush.setColor(colorPower);pen.setColor(colorPower);}else{brush.setColor(colorWarning);pen.setColor(colorWarning);}painter.setPen(pen);painter.setBrush(brush);if(m_powerLevel>0){rect.setRect(5,5,m_powerLevel,40);painter.drawRect(rect);}QString powStr=QString::asprintf("%d%%",m_powerLevel);QFontMetrics textSize(this->font());QRect textRect=textSize.boundingRect(powStr);painter.setFont(this->font());pen.setColor(colorBorder);painter.setPen(pen);painter.drawText(55-textRect.width()/2,25+textRect.height()/2,powStr);event->accept();
}int TBattery::powerLevel() const
{return m_powerLevel;
}void TBattery::setPowerLevel(int newPowerLevel)
{m_powerLevel = newPowerLevel;repaint();
}int TBattery::warnLevel() const
{return m_warnLevel;
}void TBattery::setWarnLevel(int newWarnLevel)
{m_warnLevel = newWarnLevel;repaint();
}TBattery::TBattery(QWidget *parent): QWidget{parent}
{}

 

生成的dll文件(debug/和release都可以)

放到这个路径下

然后新建一个工程,然后在ui界面就显示我们自定义的插件


http://www.ppmy.cn/news/1580254.html

相关文章

2025 centos系统安装docker并迁移docker,docker安装到指定的目录以及文件迁移,docker迁移文件

需求&#xff1a;centos7系统&#xff0c;由于硬盘有限&#xff0c;需要把docker安装到指定的目录下&#xff0c;怎么安装&#xff1f; 1. 安装Docker引擎 步骤1.1&#xff1a;卸载旧版本&#xff08;如有&#xff09; sudo yum remove -y docker \docker-client \docker-cl…

产业数字化转型业务蓝图规划(63页PPT)(文末有下载方式)

产业数字化转型业务蓝图规划&#xff08;63页PPT&#xff09;详细解读 详细资料请看本解读文章的最后内容。 在当今数字化浪潮的推动下&#xff0c;物流产业的数字化转型已成为行业发展的必然趋势。本文将对《产业数字化转型业务蓝图规划》进行详细解读&#xff0c;深入剖析物…

蓝桥杯动态规划实战:从数字三角形到砝码称重

适合人群&#xff1a;蓝桥杯备考生 | 算法竞赛入门者 | DP学习实践者 目录 一、我的动态规划入门之路 1. 数字三角形&#xff1a;经典DP首战告捷 2. 砝码称重&#xff1a;背包问题的变形 二、蓝桥杯高频算法考点 三、蓝桥杯DP专项训练题 四、备考建议 一、我的动态规划入…

C++Qt开发流程图效果,包括保存、加载功能

目录 声明开发环境实现功能主界面保存文件保存文件的格式为json。刚刚保存的流程图设计内容&#xff0c;每一个流程图匹配一个uuid进行标识 视频可扩展的功能 声明 学习Qt示例 diagramscene &#xff0c;在此基础上做功能的扩展。 开发环境 Vs 2022 Qt5.9.1 实现功能 1、…

实验9-2 高级搜索技术2

实验9-2 高级搜索技术2 一、实验目的 &#xff08;1&#xff09;掌握高级搜索技术的相关理论&#xff0c;能根据实际情况选取合适的搜索方法&#xff1b; &#xff08;2&#xff09;掌握遗传算法的基本思想&#xff0c;能根据实际问题选择种群数量、选择方法、交叉与变异方法&…

平板作为笔记本副屏使用spacedesk

平板作为笔记本的一块副屏使用 软件 spacedesk 已上传&#xff0c;可自行下载。&#xff08;上传需要审核且只能绑定一个资源&#xff0c;可在官网自行下载&#xff0c;或私聊我&#xff09; PC版 移动版 spacedesk-2-1-17.apk 电脑版按照提示一步一步安装节即可移动端直接…

解锁 AI 开发的无限可能:邀请您加入 coze-sharp 开源项目

大家好&#xff01;今天我要向大家介绍一个充满潜力的开源项目——coze-sharp&#xff01;这是一个基于 C# 开发的 Coze 客户端&#xff0c;旨在帮助开发者轻松接入 Coze AI 平台&#xff0c;打造智能应用。项目地址在这里&#xff1a;https://github.com/zhulige/coze-sharp&a…

51单片机数码管操作

数码管操作 静态数码管显示 提要点: 1.51单片机上的数码管是共阴连接的,所以需要在位选的时候给定低电平(接地)选中其几号LED,而接下来的段选注意一定是从高位到低位输出哦&#xff0c;因为我前面定义的位选三个接口顺序是由高位到低位的&#xff01;&#xff01;&#xff01…