QString完整详解

发布时间:2026/9/6 18:49:26

QString完整详解
1.基础定位QString是Qt专门处理Unicode字符串的类所有界面、文件路径、网址、命令行、QML交互全部依赖它 C原生std::string仅字节流、const char*纯ASCII多语言、中文、特殊网址极易乱码Qt工程统一用QString。编码底层内部存储UTF-16QChar天然支持中文、日文、emoji、特殊域名不用手动转码。2. 3种字符串字面量写法先前置依赖Qt6using namespace Qt::StringLiterals;2.1 xxx_L1编译期直接生成QString无运行时转换开销QUrl::fromUserInput(about:blank_L1); engine.loadFromModule(Webview_Test01_L1, Main_L1);等价老式QStringLiteral(about:blank)2.2QStringLiteral(xxx)编译期静态字符串性能最优不堆内存分配QString url QStringLiteral(https://qt.io);2.3普通xxx是C风格字符串传给QString参数会隐式转换运行时分配内存、拷贝频繁调用有性能损耗// 不推荐 QString s test;3.QString构造方式// 1. 字面量构造最优 QString s1 baidu.com_L1; // 2. 单个字符 QString s2(QChar(a)); // 3. 重复字符 QString s3(10, ); // 10个空格 // 4. const char* 转换 QString s4(123456); // 5. std::string 转 QString std::string str test; QString s5 QString::fromStdString(str); // 6. 数字转字符串 QString s6 QString::number(1024); QString s7 QString::number(3.14);4.常用成员函数4.1判断空/有效QString text ; text.isEmpty(); // true长度为0 text.isNull(); // true未初始化空字符串 text.isBlank(); // true全空格/制表符样例Utils::fromUserInput里的判断if (!userInput.isEmpty())4.2拼接字符串QString host https://; QString domain qt.io; QString url host domain; // 格式化拼接最常用替代大量号 QString addr QString(%1://%2).arg(https).arg(baidu.com);// %1 替换第一个arg%2第二个4.3截取、分割、查找QString url https://doc.qt.io/qt-6/qstring.html; url.startsWith(https); // true url.endsWith(.html); // true url.contains(qt.io); // true // 分割字符串返回 QStringList QStringList parts url.split(/); // 截取子串 url.mid(8); // 从索引8到末尾 url.mid(8, 6); // 从8开始取6个字符 url.left(8); // 左边8位 url.right(10); // 右边10位 // 查找下标int idx url.indexOf(qt.io);4.4去除空格QString input https://baidu.com ; input.trimmed(); // 去除首尾空格 input.simplified(); // 首尾中间连续空格合并为单个4.5大小写转换QString s QtWebView; s.toLower(); // qtwebview s.toUpper(); // QTWEBVIEW4.6类型互转// QString → 数字 QString numStr 99;int num numStr.toInt();double d numStr.toDouble(); // QString → std::string std::string stdStr s.toStdString(); // QString → const char*谨慎仅临时用 s.toLocal8Bit().constData();5.静态工具函数QString::fromUserInput· 智能解析用户输入网址· 输入qt.io自动补全https://qt.io· 输入本地路径、IP、文件路径自动识别非法输入返回无效QUrlQUrl Utils::fromUserInput(const QString userInput){ QUrl result QUrl::fromUserInput(userInput);}5.2其他静态方法// 空字符串 QString::empty(); // 数字转字符串 QString::number(666); // 字符重复 QString::repeated(-, 20);6.运算符重载字符串拼接QString a a_L1 b_L1;/!直接对比内容不用 strcmpif (url about:blank_L1)[ ]按下标取字符QChar c url[0];7.QString和QUrl配合// 1. QString网址转QUrl QString addr https://www.qt.io_L1; QUrl pageUrl(addr); // 2. QUrl转回QString QString showText pageUrl.toString(); // 3. 空白页兜底 return QUrl::fromUserInput(about:blank_L1);8.QString与QLatin1String/QStringView补充QLatin1String老式拉丁单字节字符串仅兼容旧代码新项目不再使用统一_L1。QStringViewQt5.15/Qt6只读字符串视图不拷贝内存适合只读遍历不修改场景性能极高。QString s test_L1; QStringView v(s);9.常见坑 最佳实践9.1不要混用const char*大量拼接// 差多次隐式转换 QString u https:// qt.io; // 好全部用 _L1 QString u https://_L1 qt.io_L1;9.2中文乱码问题· Windows下直接字面量_L1不会乱码· 读取本地文件中文使用QFileQTextStream指定编码不要直接toLocal8Bit。9.3判断空优先用isEmpty()不要用s isEmpty()效率更高。9.4函数参数尽量const QString 传引用避免拷贝// 推荐无拷贝开销 void func(const QString url); // 不推荐值传递会复制内存 void func(QString url);10.结合源码样例完整对照// 1. _L1 生成QString传给fromUserInput const QString initialUrl parser.positionalArguments().value(0, https://www.qt.io_L1); // 2. 入参是 const QString userInput Q_INVOKABLE static QUrl fromUserInput(const QString userInput); // 3. 空值判断 if (!userInput.isEmpty()) // 4. 兜底空白页QString字面量 return QUrl::fromUserInput(about:blank_L1);整段WebView示例全部围绕QString做网址解析、命令行参数、QML上下文传参。

相关新闻

Java基础面试知识点01

Java基础面试知识点01

2026/8/22 22:09:06

1. 什么是面向对象?谈谈你对面向对象的理解 对比面向过程,面向过程更注重每个步骤,面向对象更注重事情的参与者。 举例:洗衣服 面向过程:将任务拆解成一系列步骤(函数) 打开洗衣机->放衣服-&…

使用wechatapi接入本地AI引擎当网关

使用wechatapi接入本地AI引擎当网关

2026/8/23 0:40:42

技术支持 wechatapi.net 我最近一直在重新想一个问题: 如果手里已经有微信 API 能力,最值得做的到底是什么? 以前最自然的想法当然是卖接口。 比如: 登录接口消息回调接口发文本接口发图片接口其他管理接口 这条路当然可以做&am…

Windows右键菜单终极整理指南:3步打造高效工作流

Windows右键菜单终极整理指南:3步打造高效工作流

2026/8/23 0:40:42

Windows右键菜单终极整理指南:3步打造高效工作流 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否曾为Windows右键菜单的杂乱无章而烦恼&#x…

用Petri网重构原料仓储流程:从流程可视化到量化仿真优化

用Petri网重构原料仓储流程:从流程可视化到量化仿真优化

2026/9/6 18:41:09

简介:面向物流工程与流程优化领域的一份理论与实操并重的PDF资源,适合工业工程、物流管理或系统优化背景的研究生、企业流程改进人员及智能制造技术人员阅读。内容以W公司合肥工厂原料仓储为案例,针对入厂物流和厂内物流中的作业繁琐、效率低…

Buzz 离线语音转文字:把会议录音和访谈音频变成可检索的文字

Buzz 离线语音转文字:把会议录音和访谈音频变成可检索的文字

2026/9/6 18:41:09

Buzz 离线语音转文字:把会议录音和访谈音频变成可检索的文字 【免费下载链接】buzz Buzz transcribes and translates audio offline on your personal computer. Powered by OpenAIs Whisper. 项目地址: https://gitcode.com/GitHub_Trending/buz/buzz 录了…

MATLAB仿真FDM与TDM:从原理到代码的完整实现

MATLAB仿真FDM与TDM:从原理到代码的完整实现

2026/9/6 18:41:09

简介:一份关于频分复用与时分复用系统仿真的通信原理课程项目报告,面向通信原理课程学习者以及需要完成类似课设的高校本科生。报告以上海大学冬季学期通信原理项目为背景,完整搭建了在高斯信道中传输的频分复用与时分复用频带传输系统&#…

MIL-STD-271F标准解读:船舶噪声测量核心要点与实战避坑指南

MIL-STD-271F标准解读:船舶噪声测量核心要点与实战避坑指南

2026/9/6 18:41:09

简介:这是一份美国军用标准 MIL-STD-271F 的正式取消通知(Notice 1),主要面向军工与国防工业中从事无损检测(NDT)方法管理、标准体系维护、合同合规审查的工程师和标准化人员,用于确认该长期使用…

FaceFusion 本地部署从零跑通:10 分钟完成视频换脸第一次出片

FaceFusion 本地部署从零跑通:10 分钟完成视频换脸第一次出片

2026/9/6 18:41:09

FaceFusion 本地部署从零跑通:10 分钟完成视频换脸第一次出片 【免费下载链接】facefusion Industry leading face manipulation platform 项目地址: https://gitcode.com/GitHub_Trending/fa/facefusion FaceFusion 是一个可本地部署的人脸融合平台&#xf…

RK3288 eDP接口时序配置详解:从参数含义到调试实战

RK3288 eDP接口时序配置详解:从参数含义到调试实战

2026/9/6 18:31:09

简介:这套RK3288芯片eDP接口Display-Timing时序配置的实战技术文档,面向嵌入式Linux驱动调试与显示系统开发工程师,尤其是1-5年经验、熟悉设备树和基本电子测量工具的开发者。文档从RK3288芯片特性和eDP接口工作原理入手,深入解析…

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

2026/9/6 1:19:56

本文首发于“生态学者”!从“湿地面积”到“土壤碳密度”:为什么需要重新认识潮汐湿地蓝碳变化?潮汐湿地位于陆地与海洋的交汇地带,包括红树林、盐沼和潮滩,是全球重要的蓝碳生态系统。其土壤能够长期储存大量有机碳&a…

adb抓包

adb抓包

2026/9/6 1:19:56

前言 本文介绍如何通过 tcpdump 在 Android 手机上抓取网络数据包,并在电脑端使用 Wireshark 进行分析。适用于需要排查 App 网络请求、分析接口调用或调试网络问题的开发与测试场景。1. 手机要有 root 权限2. 下载 tcpdump3. adb push C:\Users\zhangkuixun\Downlo…

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

2026/9/6 1:19:56

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战 在云原生基础设施中,容器镜像体积直接决定了服务的部署速度与弹性扩容敏捷度。对于传统的 Go / Java 微服务,镜像体积通常被严格控制在 50MB 到 200MB 以内,拉取镜像只…

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

2026/9/6 1:19:56

本文首发于“生态学者”!从“湿地面积”到“土壤碳密度”:为什么需要重新认识潮汐湿地蓝碳变化?潮汐湿地位于陆地与海洋的交汇地带,包括红树林、盐沼和潮滩,是全球重要的蓝碳生态系统。其土壤能够长期储存大量有机碳&a…

adb抓包

adb抓包

2026/9/6 1:19:56

前言 本文介绍如何通过 tcpdump 在 Android 手机上抓取网络数据包,并在电脑端使用 Wireshark 进行分析。适用于需要排查 App 网络请求、分析接口调用或调试网络问题的开发与测试场景。1. 手机要有 root 权限2. 下载 tcpdump3. adb push C:\Users\zhangkuixun\Downlo…

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

2026/9/6 1:19:56

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战 在云原生基础设施中,容器镜像体积直接决定了服务的部署速度与弹性扩容敏捷度。对于传统的 Go / Java 微服务,镜像体积通常被严格控制在 50MB 到 200MB 以内,拉取镜像只…

远程协作的工作台整理

远程协作的工作台整理

2026/9/3 6:56:24

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/4 7:42:10

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/5 23:14:13

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…