Qt之自定義界面組件 一

通過qt中的painter繪圖事件繪制一個電池電量圖的變化。效果如下圖

創建一個基于界面widget工程,在wdiget界面添加一個widget界面,將添加的widget界面的類提升為Tbattery.在Tbattery類中重寫painEvent電池電量代碼

文件目錄結構

主要部分代碼

//Tbattery.cpp
#include "tbattery.h"
#include<QPainter>
#include<QPaintEvent>
Tbattery::Tbattery(QWidget *parent): QWidget{parent}
{}int Tbattery::warningLevel() const
{return m_warningLevel;
}void Tbattery::setWarningLevel(int newWarningLevel)
{m_warningLevel=newWarningLevel;repaint();
}int Tbattery::powerLevel() const
{return m_powerLevel;
}void Tbattery::setPowerLevel(int newPowerLevel)
{m_powerLevel = newPowerLevel;repaint();
}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::TextAntialiasing);painter.setRenderHint(QPainter::Antialiasing);QPen pen(colorBorder);pen.setWidth(1);pen.setStyle(Qt::SolidLine);pen.setCapStyle(Qt::FlatCap);pen.setJoinStyle(Qt::BevelJoin);painter.setPen(pen);QBrush brush(colorBackgroud);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_warningLevel){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();
}
//Tbattery.h/#ifndef TBATTERY_H
#define TBATTERY_H#include <QWidget>class Tbattery : public QWidget
{Q_OBJECT
public:explicit Tbattery(QWidget *parent = nullptr);int warningLevel() const;void setWarningLevel(int newWarningLevel);int powerLevel() const;void setPowerLevel(int newPowerLevel);private:QColor colorBackgroud=Qt::white;QColor colorBorder=Qt::black;QColor colorPower=Qt::green;QColor colorWarning=Qt::red;int m_powerLevel  = 60;int m_warningLevel = 20;signals:// QWidget interface
protected:virtual void paintEvent(QPaintEvent *event) override;
};#endif // TBATTERY_H

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/898284.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/898284.shtml
英文地址,請注明出處:http://en.pswp.cn/news/898284.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LeRobot源碼剖析——對機器人各個動作策略的統一封裝:包含ALOHA ACT、Diffusion Policy、VLA模型π0

前言 過去2年多的深入超過此前7年&#xff0c;全靠夜以繼日的勤奮&#xff0c;一天當兩天用&#xff0c;摳論文 摳代碼 和大模型及具身同事討論&#xff0c;是目前日常 而具身庫里&#xff0c;idp3、π0、lerobot值得反復研究&#xff0c;故&#xff0c;近期我一直在摳π0及l…

數據結構篇——線索二叉樹

一、引入 遍歷二叉樹是按一定規則將二叉樹結點排成線性序列&#xff0c;得到先序、中序或后序序列&#xff0c;本質是對非線性結構線性化&#xff0c;使結點&#xff08;除首尾&#xff09;在線性序列中有唯一前驅和后繼&#xff1b;但以二叉鏈表作存儲結構時&#xff0c;只能獲…

汽車保養記錄用什么軟件記錄,汽車維修記錄查詢系統,佳易王汽車保養維護服務記錄查詢管理系統操作教程

一、概述 本實例以佳易王汽車保養維護服務記錄查詢管理系統為例說明&#xff0c;其他版本可參考本實例。試用版軟件資源可到文章最后了解&#xff0c;下載的文件為壓縮包文件&#xff0c;請使用免費版的解壓工具解壓即可試用。 軟件特點&#xff1a;1、功能實用&#xff0c;操…

Sqlmap注入工具簡單解釋

安裝 1. 安裝 Python SQLMap 是基于 Python 開發的&#xff0c;所以要先安裝 Python 環境。建議安裝 Python 3.9 或更高版本&#xff0c;可從 Python 官方網站 下載對應操作系統的安裝包&#xff0c;然后按照安裝向導完成安裝。 2. 獲取 SQLMap 可以從 SQLMap 的官方 GitHu…

LLM自動化評測

使用的數據集&#xff1a;ceval-exam import requests from datasets import load_dataset, concatenate_datasets import re from tqdm import tqdm import re, time, tiktoken, ollama from ollama import ChatResponse from ollama import Optionsdef llm(model, query, te…

Python IP解析器 ip2region使用

說明&#xff1a;最近需要在python項目內使用IP定位所在城市的需求&#xff0c;沒有采用向外部ISP服務商API請求獲取信息的方案&#xff0c;則翻了翻&#xff0c;在搞Java時很多的方案&#xff0c;在Python端反而可選擇范圍很小。 # 示例查詢 ips ["106.38.188.214"…

python開發訂單查詢功能(flask+orm bee)

1. 搭建python環境。 可以參考其它文檔。 此處python使用 3.12 IDE隨意&#xff0c;PyCharm 或 Eclipse PyDev也可以。 2. Flask 2.1 安裝Flask pip install Flask 2.2 一個最簡單的flask實例 創建一個工程&#xff0c; 新建一個 main.py文件&#xff0c; 輸入以下內容…

哈爾濱服務器租用托管流程

哈爾濱服務器租用托管流程可分為三個階段實施&#xff0c;具體操作如下&#xff1a; 一、前期準備階段 業務需求評估 明確計算資源需求&#xff1a;CPU核心數/線程數、內存容量、存儲類型(HDD/SSD/NVMe)及容量、帶寬標準(獨享/共享) 確定網絡架構要求&#xff1a;多線接入、國際…

音頻大語言模型可作為描述性語音質量評價器

論文《AUDIO LARGE LANGUAGE MODELS CAN BE DESCRIPTIVE SPEECH QUALITY EVALUATORS》學習 推動多模態代理從"能聽"到"懂好壞"的進化 摘要&#xff1a; . 研究背景與問題 核心內容&#xff1a;現有音頻大語言模型缺乏對輸入語音質量的感知能力&#xff…

CVPR2025自動駕駛端到端前沿論文匯總

自動駕駛 文章目錄 自動駕駛前言自動駕駛的軌跡預測論文端到端自動駕駛論文 前言 匯總CVPR2025自動駕駛前沿論文 自動駕駛的軌跡預測論文 Leveraging SD Map to Augment HD Map-based Trajectory PredictionModeSeq: Taming Sparse Multimodal Motion Prediction with Seque…

我在哪,要去哪

在直播間聽到一首好聽的歌《我在哪&#xff0c;要去哪》-湯倩。 遇見的事&#xff1a;21~24號抽調去招生。 感受到的情緒&#xff1a;公假嗎&#xff1f;給工作量嗎&#xff1f;月工作量不夠扣錢嗎&#xff1f;報銷方便嗎&#xff1f;有事情&#xff0c;從來不解決后顧&#x…

某快餐店用戶市場數據挖掘與可視化

1、必要庫的載入 import pandas as pd import matplotlib.pyplot as plt import seaborn as sns2、加載并清洗數據 # 2.1 加載數據 df pd.read_csv(/home/mw/input/survey6263/mcdonalds.csv)# 2.2 數據清洗 # 2.2.1 檢查缺失值 print(缺失值情況&#xff1a;) print(df.isn…

Easysearch 索引生命周期管理實戰

如果你的使用場景是對時序型數據進行分析&#xff0c;可能你會更重視最新的數據&#xff0c;并且可能會定期對老舊的數據進行一些處理&#xff0c;比如減少副本數、forcemerge、 刪除等。Easysearch 的索引生命周期管理功能&#xff0c;可以自動完成此類索引的管理任務。 創建…

《心理學與生活》2025最新網課答案

《心理學與生活》2025最新網課答案 文章目錄 《心理學與生活》2025最新網課答案發展與教育單元測試情緒與情感單元測驗人格與動機單元測試感知與記憶單元測試文化與社會單元測試 發展與教育單元測試 題數 20 棉花糖實驗中哪些小孩長大后的表現更好&#xff08;&#xff09;。 …

Modbus通信協議基礎知識總結

1. 數據類型與存儲區分類 Modbus協議將數據分為四類存儲區&#xff0c;通過存儲區代號區分&#xff1a; 輸出線圈&#xff08;0x&#xff09;&#xff1a;可讀寫&#xff0c;對應二進制開關量&#xff08;如繼電器狀態&#xff09;&#xff0c;地址范圍000001-065536&#xff…

docker環境下安裝flink

前言 flink在實時計算領域中有著舉足輕重的地位。這篇文章來介紹一下&#xff0c;在linux的docker環境下&#xff0c;怎么快速安裝一個單機版本的flink。 操作流程 環境準備 檢查docker環境是不是正常&#xff0c;如果在拉取鏡像的時候比較慢&#xff0c;建議使用鏡像加速&…

LeetCode 2614.對角線上的質數:遍歷(質數判斷)

【LetMeFly】2614.對角線上的質數&#xff1a;遍歷(質數判斷) 力扣題目鏈接&#xff1a;https://leetcode.cn/problems/prime-in-diagonal/ 給你一個下標從 0 開始的二維整數數組 nums 。 返回位于 nums 至少一條 對角線 上的最大 質數 。如果任一對角線上均不存在質數&…

MongoDB 只能存儲能夠序列化的數據(比如字符串、數字等),而 Python 的 UUID 對象并不是直接可以存入數據庫的格式。

1. UUID 對象是什么&#xff1f; UUID 是 “Universally Unique Identifier”&#xff08;通用唯一識別碼&#xff09;的縮寫&#xff0c;是一種 128 位的數字&#xff0c;用于在全局范圍內生成一個唯一的標識符。它常用于數據庫中的記錄標識、分布式系統中的對象標識等場景。…

linux 安全 xshell 使用

目錄和文件 ls -l 查看目錄和文件的權限的設置情況 加固方法 對于重要目錄&#xff0c;建議執行如下類似操作 Chmod -R 750 /etc/rc.d/init.d/* 這樣只有root可以讀寫和執行這個目錄下的腳本 新建了一個用戶Q 寫入了一些信息 發現在root用戶下可以進行文件打開 接下來用普通用…

自動駕駛背后的數學:特征提取中的線性變換與非線性激活

在上一篇博客「自動駕駛背后的數學&#xff1a;從傳感器數據到控制指令的函數嵌套」—— 揭秘人工智能中的線性函數、ReLU 與復合函數中&#xff0c;我們初步探討了自動駕駛技術中從傳感器數據到控制指令的函數嵌套流程&#xff0c;其中提到了特征提取模塊對傳感器數據進行線性…