当前位置: 首页 > news >正文

QT 实现QMessageBox::about()信息自定义显示

这是我记录Qt学习过程的第四篇心得文章,主要是方便自己编写的应用程序显示“关于信息”,对QMessageBox::about()输入信息进行规范,可以设置应用程序名称,通过定义宏从pro文件获取应用程序版本号,以及编译程序的QT版本、编译的时间,同时自动根据不同编译环境显示关于信息。

实现代码:
#include "skysonya.h"#include <sstream>Skysonya::Skysonya(QObject *parent) : QObject{parent}
{appVersion = APP_VERSION;  //预定义宏APP_VERSIONqtVersion = qVersion();buildTime = fun_buildTime();
}
Skysonya::~Skysonya() {}
//程序关于信息
QString Skysonya::doAppAbout(QString appName)
{QString aboutInfo ="<html>""<span style='text-align: center; display: block;'><b style='font-size: 22px'>" +appName + "</b><br><br>版本:" + appVersion +"</span><br><br>""基于 Qt " +qtVersion;
#if defined(_MSC_VER)aboutInfo += " (MSVC2019, 32 bit) 运行于 x86_64<br>";
#elif defined(__GNUC__)aboutInfo += " (MinGW_81, 64 bit) 运行于 x86_64<br>";
#endifaboutInfo += "构建时间:" + buildTime +"<br>""版权所有 2024 @ 宇翔科技 石书义<br>""邮箱:<a href='mailto:1130226431@qq.com'>1130226431@qq.com</a><br>""网站:<a href='https://blog.csdn.net/skysonya_shisy'>https://blog.csdn.net/skysonya_shisy</a>""</html>";return aboutInfo;
}
//获取程序构建时间
QString Skysonya::fun_buildTime()
{std::ostringstream oss;oss << __DATE__ << " " << __TIME__;return QString::fromStdString(oss.str());// return QString("%1 %2").arg(__DATE__).arg(__TIME__); //C语言风格
}
具体使用

//文件
void MainWindow::slot_file_triggered()
{//关于QString strInfo = skysonya.doAppAbout(wTitle);QMessageBox::about(this, tr("关于") + wTitle, strInfo);
}
自定义类:
#ifndef SKYSONYA_H
#define SKYSONYA_H
#include <QDebug>
#include <QFile>
#include <QInputDialog>
#include <QMessageBox>
#include <QObject>
#include <QPushButton>
#include <QString>
#include <QTextCodec>enum EncodingFormat
{ANSI,UTF16LE,UTF16BE,UTF8,UTF8BOM,
};class Skysonya : public QObject
{Q_OBJECTQ_ENUM(EncodingFormat)
public:explicit Skysonya(QObject *parent = nullptr);~Skysonya();QString doAppAbout(QString appName);                                               //程序关于信息bool messageBox(QString msgType, QString dlgTitle, QString strInfo);               //中文提示对话框QString inputDialog(QString dlgTitle, QString labelText, QString textValue = "");  //中文按钮文本输入对话框QTextCodec *getFileCharacterEncoding(const QString &fileName);                     //获取文件编码格式函数QString openFileByIOWhole(const QString &fileName);                 //用QFile打开文件,整体读取QString openFileByIOLines(const QString &fileName);                 //用QFile打开文件,逐行读取QString openFileByStreamWhole(const QString &fileName);             //用QTextStream读取文件,整体读取QString openFileByStreamLines(const QString &fileName);             //用QTextStream读取文件,逐行读取bool saveFileByIOWhole(const QString &fileName, QString text);      //用QFile保存文件,整体保存bool saveFileByStreamWhole(const QString &fileName, QString text);  //用QTextStream保存文件,整体保存private:QString appVersion;       //软件版本号QString buildTime;        //程序构建时间QString qtVersion;        // QT版本号QString fun_buildTime();  //获取程序构建时间
};#endif  // SKYSONYA_H

工程文件:

#表示项目使用的模板是app,是一般的应用程序。
TEMPLATE = app
#应用程序名称
TARGET = TestSonya2024
#应用程序版本
VERSION = 2024.10.8.1
# #APP_VERSION可在cpp中使用
DEFINES += APP_VERSION="\\\"$${VERSION}\\\""

完整的示例地址:https://download.csdn.net/download/skysonya_shisy/89861254

相关文章:

QT 实现QMessageBox::about()信息自定义显示

这是我记录Qt学习过程的第四篇心得文章&#xff0c;主要是方便自己编写的应用程序显示“关于信息”&#xff0c;对QMessageBox::about()输入信息进行规范&#xff0c;可以设置应用程序名称&#xff0c;通过定义宏从pro文件获取应用程序版本号&#xff0c;以及编译程序的QT版本、…...

(C++进阶)C++20

目录 一、概述 二、新特性 1. 模块&#xff08;Modules&#xff09;功能 2. 概念&#xff08;Concepts&#xff09;功能 3. 范围&#xff08;Ranges&#xff09;功能 4. 协程&#xff08;Coroutines&#xff09;功能 5. 三路比较运算符&#xff08;Spaceship Operator&a…...

【常用的安装破解版指令】MAC安装破解版软件显示文件损坏时

MAC安装破解版软件显示文件损坏时 复制以下命令粘贴到终端后 sudo xattr -rd com.apple.quarantine 打开Finder&#xff08;访达&#xff09;&#xff0c;点击左侧的 应用程序&#xff0c;将应用拖进终端中&#xff0c;然后按键盘的回车键&#xff08;return&#xff09;&…...

【QT Quick】定时器和线程:定时器Timer

在现代用户界面开发中&#xff0c;动态更新内容、处理定时任务或异步任务是常见的需求&#xff0c;尤其在复杂应用中可能会遇到界面阻塞的问题。在 Qt Quick 中&#xff0c;定时器&#xff08;Timer&#xff09;和多线程是两种主要的解决方案&#xff0c;用于避免这种阻塞现象。…...

【NIO基础】NIO(非阻塞 I/O)和 IO(传统 I/O)的区别,以及 NIO 的三大组件详解

目录 1、NIO 2、NIO 和 IO 的区别 1. 阻塞 vs 非阻塞 2. 一个线程 vs 多个连接 3. 面向流 vs 面向缓冲 4. 多路复用 3、Channel & Buffer (1&#xff09;Channel&#xff1a;双向通道 (2&#xff09;Buffer&#xff1a;缓冲区 (3&#xff09;ByteBuffer&#xff…...

HDLBits中文版,标准参考答案 | 3.1.3 Arithmetic Circuits | 算术电路

关注 望森FPGA 查看更多FPGA资讯 这是望森的第 10 期分享 作者 | 望森 来源 | 望森FPGA 目录 1 Half adder | 半加器 2 Full adder | 全加器 3 3-bit binary adder | 3位二进制加法器 4 Adder | 加法器 5 Signed addition overflow | 有符号数的加法溢出 6 100-bit bi…...

网络编程 websocket

1. HTTP 截至 2024 年&#xff0c;HTTP&#xff08;HyperText Transfer Protocol&#xff09;已经发展到 HTTP/3 版本。 各个版本的简介&#xff1a; HTTP/0.9&#xff08;1991年&#xff09;&#xff1a; 最初的 HTTP 版本&#xff0c;非常简单&#xff0c;仅支持 GET 方法…...

【JDK17 | 5】Java 17 深入剖析:新的随机数生成器 API

引言 在 Java 17 中&#xff0c;新的随机数生成器 API 作为一个重要特性被引入&#xff0c;旨在提供更灵活和高效的随机数生成方案。新的 API 不仅支持多种生成算法&#xff0c;还改善了随机数生成的性能&#xff0c;适应了现代开发的需求。在本篇文章中&#xff0c;我们将深入…...

剪切走的照片:高效恢复与预防策略

一、剪切走的照片现象描述 在日常的数字生活中&#xff0c;照片作为记录生活点滴、工作成果的重要载体&#xff0c;其重要性不言而喻。然而&#xff0c;有时我们可能会遇到一种令人头疼的情况&#xff1a;原本打算通过剪切操作将照片移动到另一个位置&#xff0c;却意外地发现…...

基于XGBoost的结核分枝杆菌的耐药性预测研究【多种机器学习】

1. 绪论 目录 1. 绪论 1.1研究背景及意义 1.2国内外研究现状 1.2.1国内研究现状 1.2.2国外研究现状 1.3研究目的 2. 相关技术概念 2.1结核分枝杆菌的耐药性机制 2.2机器学习与系统发育法相结合 2.3XGBoost和随机森林算法的优势和应用 3. 模型设计 3.1数据准备与预…...

【C++差分数组】3229. 使数组等于目标数组所需的最少操作次数|2066

本文涉及知识点 C差分数组 LeetCode3229. 使数组等于目标数组所需的最少操作次数 给你两个长度相同的正整数数组 nums 和 target。 在一次操作中&#xff0c;你可以选择 nums 的任何子数组&#xff0c;并将该子数组内的每个元素的值增加或减少 1。 返回使 nums 数组变为 tar…...

浅谈PyTorch中的DP和DDP

目录 1. 引言2. PyTorch 数据并行&#xff08;Data Parallel, DP&#xff09;2.1 DP 的优缺点2.2 DP 实现代码示例 3. PyTorch 分布式数据并行&#xff08;Distributed Data Parallel, DDP&#xff09;3.1 DDP 的优缺点3.2 分布式基本概念3.3 DDP 的应用流程3.5 DDP 实现代码示…...

在Windows上利用谷歌浏览器进行视频会议和协作

随着远程工作和在线教育的普及&#xff0c;使用谷歌浏览器在Windows上进行视频会议和协作变得越来越常见。本文将为您提供一个详细的教程&#xff0c;教您如何在Windows上利用谷歌浏览器进行视频会议和协作&#xff0c;同时解决一些常见的问题。&#xff08;本文由https://goog…...

VMware Fusion 13.6.1 发布下载,修复 4 个已知问题

VMware Fusion 13.6.1 发布下载&#xff0c;修复 4 个已知问题 VMware Fusion 13.6.1 for Mac - 领先的免费桌面虚拟化软件 适用于基于 Intel 处理器和搭载 Apple 芯片的 Mac 的桌面虚拟化软件 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-fusion-13/ 查看最新…...

P9751 [CSP-J 2023] 旅游巴士

P 9751 P9751 P9751 部分分思路 题目要求时间必须是 k k k 的非负整数倍&#xff0c;所以想到了升维。这样就变成了一道分层图最短路的题目。用 BFS 算法可以拿到 A i 0 A_i0 Ai​0 的 35 35 35 分。 满分思路 其实部分分的思路已经很接近正解了&#xff0c;想要拿到满…...

【Linux】man手册安装使用

目录 man(manual,手册) 手册安装: 章节区分&#xff1a; 指令参数: 使用场景&#xff1a; 手册内容列表: 手册查看快捷键: 实例: 仍致谢:Linux常用命令大全(手册) – 真正好用的Linux命令在线查询网站 提供的命令查询 在开头先提醒一下:在 man 手册中退出的方法很简单…...

mysql学习教程,从入门到精通,SQL处理重复数据(39)

1、SQL处理重复数据 使用GROUP BY和HAVING子句删除重复数据&#xff08;以SQL Server为例&#xff09;”的背景和原理的详细解释&#xff1a; 1.1、背景 在数据库管理中&#xff0c;数据重复是一个常见的问题。重复数据可能由于多种原因产生&#xff0c;如数据录入错误、数据…...

mapbox解决wmts请求乱码问题

贴个群号 WebGIS学习交流群461555818&#xff0c;欢迎大家 事故现场 如图所示&#xff0c;wmts请求全是乱码&#xff0c;看起来像是将一个完整的请求拆成一个一个的字母了&#xff0c;而且控制台打印map.getStyle() 查看该source发现不出异常 解决办法 此类问题就是由于更…...

《C++职场中设计模式的学习与应用:开启高效编程之旅》

在 C职场中&#xff0c;设计模式是提升代码质量、增强程序可维护性和可扩展性的强大武器。掌握并正确应用设计模式&#xff0c;不仅能让你在工作中更加得心应手&#xff0c;还能为你的职业发展增添有力的砝码。那么&#xff0c;如何在 C职场中学习和应用设计模式呢&#xff1f;…...

Maya动画--基础约束

005-基础约束02_哔哩哔哩_bilibili 父子约束 移动圆环&#xff0c;球体会跟着移动&#xff0c;并回到初始的相对位置 不同物体间没有层级关系 明确子物体与父物体间的关系 衣服上的纽扣 法线约束 切线约束 碰到中心时会改变方向...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3 &#x1f3af; 今日目标 理解类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;的关系学会定义类的属性、方法和构造函数&#xff08;init&#xff09;掌握对象的创建与使用初识封装、继承和多态的基本概念&#xff08;预告&#xff09; &a…...

Python实现简单音频数据压缩与解压算法

Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中&#xff0c;压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言&#xff0c;提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...

【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统

Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...