QMessageBox自定义按钮文本中文显示,按钮个数等

2023-12-25 19:36

本文主要是介绍QMessageBox自定义按钮文本中文显示,按钮个数等,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景:

个人笔记。

我已经习惯了qt默认英文显示,但是给客户交付软件终归还是要中文,不想把代码写死,又不想做翻译文件和tr()函数。还是因为懒。按理说,应该规矩一些使用tr函数,但规模小或者需求定向固定的情况下,也可以有一些方法。

方法:

经过实验发现,QMessageBox其实挺简单,qt已经把它包装得很通用化了。可以这样粗暴地认为:就一种对话框,无非就是图标和按钮个数的区别。当然infomation,warning,question主要决定了图标,而图标性质不同,决定了报警风格,甚至是报警声音(没测试,理论上是)。

如此,就容易记忆了。

qt手册里写的都是所谓的“标准”用法,英文模式的话,可以用枚举指定按钮,见名知意。但自定义模式,我没看到详细说明。所以自己总结了一下。只说static函数即可。通常就几个参数:

一般用的是参数最多那个重载。

    static int information(QWidget *parent, const QString &title,
                           const QString& text,
                           const QString& button0Text,
                           const QString& button1Text = QString(),
                           const QString& button2Text = QString(),
                           int defaultButtonNumber = 0,
                           int escapeButtonNumber = -1);
    static int question(QWidget *parent, const QString &title,
                        const QString& text,
                        const QString& button0Text,
                        const QString& button1Text = QString(),
                        const QString& button2Text = QString(),
                        int defaultButtonNumber = 0,
                        int escapeButtonNumber = -1);
    static int warning(QWidget *parent, const QString &title,
                       const QString& text,
                       const QString& button0Text,
                       const QString& button1Text = QString(),
                       const QString& button2Text = QString(),
                       int defaultButtonNumber = 0,
                       int escapeButtonNumber = -1);

很明显这三种用法都一样。

parent:指定对话框的父级对象。如果不指定,对话框是相对于整个application的。如果指定了,比如我为窗体指定了qss,它会顺延到对话框。

titile和text就不用说了。

button*Text可以分别指定按钮文本,指定几个就显示几个按钮。不用管它怎么和那些枚举对应上,用惯了枚举思维就禁锢了,其实没必要。随便根据需要指定就好。

defaultButtonNumber指定默认按钮的索引号,也就是直接按回车是哪个按钮。刚才那三个按钮编号是0,1,2。

escapeButtonNumber指定按esc执行的那个按钮的索引号。

下面直接按照三个按钮的方式举例,如果是两个或者一个按钮,酌情调整即可。

举例:

    int iBtn = QMessageBox::information(this, "标题", "文本", "是", "否", "取消", 0, 2);switch (iBtn) {case 0:QMessageBox::information(this, "", "是");break;case 1:QMessageBox::information(this, "", "否");break;case 2:QMessageBox::information(this, "", "取消");break;default:break;}

上面代码把information换成warning和question就是下面这样:

除了图标都一样,就是风格问题。当选择某个按钮之后,判断int返回值即可。

假设要显示两个或者一个按钮,那就把buttonText只设置一个就行了,后面对应的defaultButtonNumber和escapeButtonNumber记者对应好,别指定无效值就行。

如此以来,对话框可以随便定制按钮,甚至比qt预定义的枚举更灵活。

本文完。

这篇关于QMessageBox自定义按钮文本中文显示,按钮个数等的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/536691

相关文章

Python文本相似度计算的方法大全

《Python文本相似度计算的方法大全》文本相似度是指两个文本在内容、结构或语义上的相近程度,通常用0到1之间的数值表示,0表示完全不同,1表示完全相同,本文将深入解析多种文本相似度计算方法,帮助您选... 目录前言什么是文本相似度?1. Levenshtein 距离(编辑距离)核心公式实现示例2. Jac

聊聊springboot中如何自定义消息转换器

《聊聊springboot中如何自定义消息转换器》SpringBoot通过HttpMessageConverter处理HTTP数据转换,支持多种媒体类型,接下来通过本文给大家介绍springboot中... 目录核心接口springboot默认提供的转换器如何自定义消息转换器Spring Boot 中的消息

Python中高级文本模式匹配与查找技术指南

《Python中高级文本模式匹配与查找技术指南》文本处理是编程世界的永恒主题,而模式匹配则是文本处理的基石,本文将深度剖析PythonCookbook中的核心匹配技术,并结合实际工程案例展示其应用,希... 目录引言一、基础工具:字符串方法与序列匹配二、正则表达式:模式匹配的瑞士军刀2.1 re模块核心AP

Python自定义异常的全面指南(入门到实践)

《Python自定义异常的全面指南(入门到实践)》想象你正在开发一个银行系统,用户转账时余额不足,如果直接抛出ValueError,调用方很难区分是金额格式错误还是余额不足,这正是Python自定义异... 目录引言:为什么需要自定义异常一、异常基础:先搞懂python的异常体系1.1 异常是什么?1.2

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

C语言自定义类型之联合和枚举解读

《C语言自定义类型之联合和枚举解读》联合体共享内存,大小由最大成员决定,遵循对齐规则;枚举类型列举可能值,提升可读性和类型安全性,两者在C语言中用于优化内存和程序效率... 目录一、联合体1.1 联合体类型的声明1.2 联合体的特点1.2.1 特点11.2.2 特点21.2.3 特点31.3 联合体的大小1

SQL Server安装时候没有中文选项的解决方法

《SQLServer安装时候没有中文选项的解决方法》用户安装SQLServer时界面全英文,无中文选项,通过修改安装设置中的国家或地区为中文中国,重启安装程序后界面恢复中文,解决了问题,对SQLSe... 你是不是在安装SQL Server时候发现安装界面和别人不同,并且无论如何都没有中文选项?这个问题也

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

Python实现中文文本处理与分析程序的示例详解

《Python实现中文文本处理与分析程序的示例详解》在当今信息爆炸的时代,文本数据的处理与分析成为了数据科学领域的重要课题,本文将使用Python开发一款基于Python的中文文本处理与分析程序,希望... 目录一、程序概述二、主要功能解析2.1 文件操作2.2 基础分析2.3 高级分析2.4 可视化2.5