QT实现QMessageBox中文按钮

embedded/2024/10/10 14:48:13/

这是我记录Qt学习过程心得文章的第二篇,主要是为了方便QMessageBox弹出框的使用,通过自定义的方式,将其常用的功能,统一封装成一个函数,还是写在了Skysonya类里面。

实现代码:

//中文提示对话框
bool Skysonya::messageBox(QString msgType, QString dlgTitle, QString strInfo)
{QMessageBox *msgBox;int result = -1;bool value = false;if (msgType.toLower() == "critical"){//创建一个Critical弹出对话框,添加按钮:"Ok"msgBox = new QMessageBox(QMessageBox::Critical, dlgTitle, strInfo, QMessageBox::Ok);msgBox->button(QMessageBox::Ok)->setText("确定");  //将"Ok"按钮改为显示"确定"result = msgBox->exec();                           //显示Critical弹出对话框if (result == QMessageBox::Ok){value = true;}}else if (msgType.toLower() == "warning"){//创建一个Warning弹出对话框,添加按钮:"Ok"msgBox = new QMessageBox(QMessageBox::Warning, dlgTitle, strInfo, QMessageBox::Ok);msgBox->button(QMessageBox::Ok)->setText("确定");  //将"Ok"按钮改为显示"确定"result = msgBox->exec();                           //显示Warning弹出对话框if (result == QMessageBox::Ok){value = true;}}else if (msgType.toLower() == "warningyes"){//创建一个Warning弹出对话框,添加按钮:"Yes"、"No"msgBox = new QMessageBox(QMessageBox::Warning, dlgTitle, strInfo, QMessageBox::Yes | QMessageBox::No);msgBox->button(QMessageBox::Yes)->setText("是");  //将"Yes"按钮改为显示"是"msgBox->button(QMessageBox::No)->setText("否");   //将"No"按钮改为显示"否"result = msgBox->exec();                          //显示Warning弹出对话框if (result == QMessageBox::Yes){value = true;}}else if (msgType.toLower() == "information"){//创建一个Information弹出对话框,添加按钮:"Ok"msgBox = new QMessageBox(QMessageBox::Information, dlgTitle, strInfo, QMessageBox::Ok);msgBox->button(QMessageBox::Ok)->setText("确定");  //将"Ok"按钮改为显示"确定"result = msgBox->exec();                           //显示Information弹出对话框if (result == QMessageBox::Ok){value = true;}}else if (msgType.toLower() == "informationyes"){//创建一个Information弹出对话框,添加按钮:"Ok"msgBox = new QMessageBox(QMessageBox::Information, dlgTitle, strInfo, QMessageBox::Yes | QMessageBox::No);msgBox->button(QMessageBox::Yes)->setText("是");  //将"Yes"按钮改为显示"是"msgBox->button(QMessageBox::No)->setText("否");   //将"No"按钮改为显示"否"result = msgBox->exec();                          //显示Information弹出对话框if (result == QMessageBox::Yes){value = true;}}return value;
}

具体使用:

//文件
void MainWindow::slot_file_triggered()
{//输入对话框QString strInfo = skysonya.inputDialog("对话框", "请输入:");skysonya.messageBox("warning", "输入对话框", 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

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


http://www.ppmy.cn/embedded/125437.html

相关文章

12.数据结构和算法-栈和队列的定义和特点

栈和队列的定义和特点 栈的应用 队列的常见应用 栈的定义和特点 栈的相关概念 栈的示意图 栈与一般线性表有什么不同 队列的定义和特点 队列的相关概念

深入理解链表(SList)操作

目录&#xff1a; 一、 链表介绍1.1、 为什么引入链表1.2、 链表的概念及结构1.3、 链表的分类 二、 无头单向非[循环链表](https://so.csdn.net/so/search?q循环链表&spm1001.2101.3001.7020)的实现2.1、 [单链表](https://so.csdn.net/so/search?q单链表&spm1001.2…

为何四次挥手要等待2MSL

参考文章&#xff1a;https://zhuanlan.zhihu.com/p/204988465 A主动关闭连接一方&#xff0c;B是被动关闭一方 我们假设A发送了ACK报文后过了一段时间t之后B才收到该ACK&#xff0c;则有 0 < t < MSL。因为A并不知道它发送出去的ACK要多久对方才能收到&#xff0c;所以…

LeetCode1049:最后一块石头的重量

题目链接&#xff1a;1049. 最后一块石头的重量 II - 力扣&#xff08;LeetCode&#xff09; 代码如下 class Solution { public:int lastStoneWeightII(vector<int>& stones) {int sum 0;vector<int> dp(1501,0);for(int i 0; i < stones.size(); i){s…

【QT Quick】C++交互:调用QML函数

在本节中&#xff0c;我们将深入探讨如何在C中调用QML函数。这项功能非常常用&#xff0c;尤其是在需要将C逻辑与QML界面进行交互时。我们将重点关注invokeMethod函数&#xff0c;它支持多种参数形式&#xff0c;并允许我们灵活地处理不同的调用场景。 invokeMethod概述 invo…

吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)2.7-2.8

目录 第四门课 卷积神经网络&#xff08;Convolutional Neural Networks&#xff09;第二周 深度卷积网络&#xff1a;实例探究&#xff08;Deep convolutional models: case studies&#xff09;2.7 Inception 网络&#xff08;Inception network&#xff09;2.8 使 用 开 源 …

15天项目

UniApp Vue3 组合式 API 版本 15 天学习计划 第1天&#xff1a;开发环境配置和基础知识 uniapp Vue3 版本知识点概述安装并配置 HBuilderX 编辑器创建第一个 Vue3 项目配置外部浏览器和各种小程序模拟器创建页面及了解 Vue 页面的基本组成部分 第2天&#xff1a;常用内置组件…

绘制YOLOv11模型在训练过程中,精准率,召回率,mAP_0.5,mAP_0.5:0.95,以及各种损失的变化曲线

一、本文介绍 本文用于绘制模型在训练过程中&#xff0c;精准率&#xff0c;召回率&#xff0c;mAP_0.5&#xff0c;mAP_0.5:0.95&#xff0c;以及各种损失的变化曲线。用以比较不同算法的收敛速度&#xff0c;最终精度等&#xff0c;并且能够在论文中直观的展示改进效果。支持…