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

相关文章

Redis出现中文乱码的问题及解决

《Redis出现中文乱码的问题及解决》:本文主要介绍Redis出现中文乱码的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 问题的产生2China编程. 问题的解决redihttp://www.chinasem.cns数据进制问题的解决中文乱码问题解决总结

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

一文详解Java Stream的sorted自定义排序

《一文详解JavaStream的sorted自定义排序》Javastream中的sorted方法是用于对流中的元素进行排序的方法,它可以接受一个comparator参数,用于指定排序规则,sorte... 目录一、sorted 操作的基础原理二、自定义排序的实现方式1. Comparator 接口的 Lam

SpringSecurity显示用户账号已被锁定的原因及解决方案

《SpringSecurity显示用户账号已被锁定的原因及解决方案》SpringSecurity中用户账号被锁定问题源于UserDetails接口方法返回值错误,解决方案是修正isAccountNon... 目录SpringSecurity显示用户账号已被锁定的解决方案1.问题出现前的工作2.问题出现原因各

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

如何自定义一个log适配器starter

《如何自定义一个log适配器starter》:本文主要介绍如何自定义一个log适配器starter的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求Starter 项目目录结构pom.XML 配置LogInitializer实现MDCInterceptor

RedisTemplate默认序列化方式显示中文乱码的解决

《RedisTemplate默认序列化方式显示中文乱码的解决》本文主要介绍了SpringDataRedis默认使用JdkSerializationRedisSerializer导致数据乱码,文中通过示... 目录1. 问题原因2. 解决方案3. 配置类示例4. 配置说明5. 使用示例6. 验证存储结果7.

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可