QString完整详解

发布时间:2026/7/10 22:21:57

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/7/10 22:11:56

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

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

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

2026/7/10 22:11:56

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

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

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

2026/7/10 22:11:56

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

每日穿搭助手:鸿蒙AI应用开发实战——AI衣橱,每日穿搭不再愁

每日穿搭助手:鸿蒙AI应用开发实战——AI衣橱,每日穿搭不再愁

2026/7/11 0:02:03

每日穿搭助手:鸿蒙AI应用开发实战——AI衣橱,每日穿搭不再愁 一、引言 每天早上打开衣柜,面对满柜的衣服却不知道穿什么——这是无数人的日常困扰。气温变化、场合差异、风格偏好,这些因素交织在一起,让"穿什么&q…

工业信号干扰处理与FOD4216光耦应用实战

工业信号干扰处理与FOD4216光耦应用实战

2026/7/11 0:02:03

1. 工业环境中的信号干扰挑战在工业自动化领域,信号采集的准确性直接关系到整个控制系统的可靠性。典型的工业现场充斥着各种干扰源:大功率电机启停产生的电磁干扰、变频器工作产生的高频噪声、继电器触点火花放电,以及长距离传输引入的共模干…

PostgreSQL 备份与恢复实战:从 pg_dump 到时间点恢复的生产级方案

PostgreSQL 备份与恢复实战:从 pg_dump 到时间点恢复的生产级方案

2026/7/11 0:02:03

PostgreSQL 备份与恢复实战:从 pg_dump 到时间点恢复的生产级方案 一、数据库备份最容易被忽略的问题,不是「有没有做备份」,而是「备份能不能恢复、恢复要多久、以及恢复后的数据对不对」 很多团队做数据库备份的方式是「写个 cron job&am…

5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 [特殊字符]

5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 [特殊字符]

2026/7/11 0:02:03

5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 🎬 【免费下载链接】zimuku_for_kodi Kodi 插件,用于从「字幕库」网站下载字幕 项目地址: https://gitcode.com/gh_mirrors/zi/zimuku_for_kodi 还记得那个深夜吗?你刚下载…

WechatDecrypt技术解析:深入理解微信数据库AES-256-CBC解密机制

WechatDecrypt技术解析:深入理解微信数据库AES-256-CBC解密机制

2026/7/11 0:02:03

WechatDecrypt技术解析:深入理解微信数据库AES-256-CBC解密机制 【免费下载链接】WechatDecrypt 微信消息解密工具 项目地址: https://gitcode.com/gh_mirrors/we/WechatDecrypt 在数字隐私日益重要的今天,微信聊天记录作为个人数字资产的重要组成…

运维革命的背后:云管理通道介绍

运维革命的背后:云管理通道介绍

2026/7/10 23:52:03

1.1云管道简介云管理通道。这是现代网络设备(尤其是企业级路由器、交换机、防火墙、AP等)实现集中化、可视化、自动化运维的核心技术基础。简单说,它就是设备与云端管理平台之间建立的一条安全、可靠、可管理的通信链路。1.2云管道的价值云管…

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

2026/7/10 22:32:48

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gi…

6个月转型AI工程师:实战路径与核心技能

6个月转型AI工程师:实战路径与核心技能

2026/7/9 18:28:30

1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公…

YOLOv5模型剪枝与量化实战:边缘设备部署优化

YOLOv5模型剪枝与量化实战:边缘设备部署优化

2026/7/10 6:57:56

1. 项目背景与核心价值在计算机视觉领域,YOLOv5因其出色的实时检测性能成为工业界宠儿。但当我们尝试将其部署到边缘设备(如树莓派、Jetson Nano或手机终端)时,立刻会遇到两个致命问题:模型体积庞大(原始YO…

WechatDecrypt技术解析:深入理解微信数据库AES-256-CBC解密机制

WechatDecrypt技术解析:深入理解微信数据库AES-256-CBC解密机制

2026/7/11 0:02:03

WechatDecrypt技术解析:深入理解微信数据库AES-256-CBC解密机制 【免费下载链接】WechatDecrypt 微信消息解密工具 项目地址: https://gitcode.com/gh_mirrors/we/WechatDecrypt 在数字隐私日益重要的今天,微信聊天记录作为个人数字资产的重要组成…

5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 [特殊字符]

5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 [特殊字符]

2026/7/11 0:02:03

5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 🎬 【免费下载链接】zimuku_for_kodi Kodi 插件,用于从「字幕库」网站下载字幕 项目地址: https://gitcode.com/gh_mirrors/zi/zimuku_for_kodi 还记得那个深夜吗?你刚下载…

PostgreSQL 备份与恢复实战:从 pg_dump 到时间点恢复的生产级方案

PostgreSQL 备份与恢复实战:从 pg_dump 到时间点恢复的生产级方案

2026/7/11 0:02:03

PostgreSQL 备份与恢复实战:从 pg_dump 到时间点恢复的生产级方案 一、数据库备份最容易被忽略的问题,不是「有没有做备份」,而是「备份能不能恢复、恢复要多久、以及恢复后的数据对不对」 很多团队做数据库备份的方式是「写个 cron job&am…