Qt5.5.1版本中QString().arg()和qss在处理路径及文件名需要注意的地方
时间:2022-07-22
本文章向大家介绍Qt5.5.1版本中QString().arg()和qss在处理路径及文件名需要注意的地方,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、问题
在工作中的时候,需要做一个带有图片的按钮,在加载图片的时候,出现加载不上的问题
二、使用测试文件复原问题场景
文件名称:"金果园1#(20180202182916)(20180202185154)_0.png" 文件路径:"D:/Build/bin/Win32/test+%1==/img" 路径和文件名称合并起来期望结果为:"D:/Build/bin/Win32/test+%1==/img/金果园1#(20180202182916)(20180202185154)_0.png"
那么使用QString()::arg()是否是这样的呢?写一段程序来测试一下 测试代码:
QString strPath = "D:/Build/bin/Win32/test+%1==/img";
QString strFile = QString::fromLocal8Bit("金果园1#(20180202182916)(20180202185154)_0.png");
//使用arg()转义
QString strFilePath = QString::fromLocal8Bit("合并后的路径为:%1%2").arg(strPath).arg(strFile);
QMessageBox::information(this, QString::fromLocal8Bit("测试输出"), strFilePath);
输出结果:
test.png
诶!有没有发现问题,怎么跟期望不一样呢,文件名字的地方,在原始路径下是个什么字符呢? 是一个“%1”字符
原因: Qt .arg方法,在转义和拼接字符串的时候,会从前往后进行转义拼接,当转义过后的字符串中存在%1、%2这种字符,会认为是转义符,然后把后面的字符串 转义到此处,所以路径当中尽量不要携带这些字符,或者使用其他方式进行拼接和转义。
三、qss使用的时候需要注意的地方
问题代码:
QString sStyle = QString("QPushButton{border-image: url(%1);}").arg(sImagePath);
pImageButton->resize(pixmap.size());
pImageButton->setStyleSheet(sStyle);
pImageButton->show();
属于Qt的机制问题,QPushButton 的qss样式表中的url不能包含%字符,如果包含此字符 会导致设置style的时候解析失败。
- WordPress 路径相关函数总结(三):插件路径相关函数
- 修改WordPress 搜索结果页面url 形式,安全有保障
- C# Enum设计和使用的相关技巧
- 小程序如何利用更低成本获得高流量?
- 使用System.Net.Mail通过gmail发送电子邮件
- 删除 WordPress 导航菜单的多余 CSS 选择器(id或class)
- es6 对象的扩展
- 自定义WordPress 标签云小工具相关参数
- 检查.NET程序平台目标(Platform Target)工具CorFlags
- 哪些行业最适合抢驻小程序?
- WordPress 一键关闭/禁止页面评论功能
- 在一个.net sln中包含多个project,project引用同一个dll导致的错误
- Windows下安装MariaDB
- Quartz.net官方开发指南 第一课:使用Quartz.net
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 自己写一个简单的MyBatis工具类代码+注释
- 多对一和一对多
- 使用C3P0连接数据库
- QQ授权,接收代码发送的电子邮件
- c:set
- 37道Python经典面试题(附答案),看完面试不愁了
- 错误提示合集--->待增加 Σ( ° △ °|||)︴
- RabbitMQ如何保证消息的可靠投递?
- Python处理json总结
- 使用SpringMVC写一个简单的跳转界面
- 使用自定义注解,设置发送到客户端的响应的内容类型
- Python构造数据的神器库-Faker
- SpringMVC中传参date类型失败,需要@DateTimeFormat(““)
- new ScalarHandler()-->返回值为long,不能用int接收!!!
- JavaWeb使用德鲁伊(略)实现登录、激活码注册(发送激活码到邮箱,点击激活链接后,才能正常登陆)、注册界面