尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

QT_字符串类应用与常用基本数据类型

QT_字符串类应用与常用基本数据类型
📅 发布时间:2026/7/8 6:00:10

文章目录

  • QT_字符串应用于常用基本数据类型
    • Qt字符串类应用
      • 创建与初始化
      • 拼接
      • 格式化(最常用)
      • 查找与判断
      • 截取
      • 替换与删除
      • 大小写转换
      • 去除空白
      • 拆分与合并
      • 字符串与数值互转
      • 比较
      • 与 C 字符串互转
      • 重复与填充
    • QT常见基本数据类型
      • 整数类型
      • 浮点类型
      • 字符类型
      • 字节数组
      • 万能容器
      • 日期与时间
      • 容器类
      • 几何与图形类型
      • 其他常用类型
    • 使用建议
    • 类型转换关系总览

QT_字符串应用于常用基本数据类型

Qt字符串类应用

创建与初始化

QString s1="Hello";// 直接赋值QStrings2("Hello");// 构造函数QString s3=QString("Hello");// 构造函数QString s4=QString::fromUtf8("你好");// 从 UTF-8 创建QString s5=QString::fromLocal8Bit("你好");// 从本地编码创建QString s6=QStringLiteral("Hello");// 编译期创建,性能最优QString s7=QString::number(42);// 数值 → 字符串QString s8=QString::number(3.14,'f',2);// "3.14"

拼接

s1+s2;// 运算符拼接s1.append(s2);// 追加s1+=s2;// 追加s1.prepend("Hi ");// 在前面插入s1.insert(5," Qt");// 在指定位置插入QString::asprintf("%d-%d",2026,7);// 类似 printf 格式化

格式化(最常用)

// arg() 按 %1, %2 ... 占位符替换QString msg=QString("姓名: %1, 年龄: %2, 成绩: %3").arg("张三").arg(20).arg(95.5);// 结果: "姓名: 张三, 年龄: 20, 成绩: 95.5"// 控制数字格式QString::number(3.14159,'f',2);// "3.14"(保留2位小数)QString::number(255,16);// "ff"(转十六进制)

查找与判断

s.contains("Hello");// 是否包含子串s.startsWith("He");// 是否以...开头s.endsWith("lo");// 是否以...结尾s.indexOf("llo");// 查找子串,返回首次出现的位置(找不到返回 -1)s.lastIndexOf("l");// 查找子串,返回最后一次出现的位置s.count("l");// 子串出现的次数s.isEmpty();// 是否为空 ""s.isNull();// 是否为 null(未初始化)

截取

s.left(5);// 取左边5个字符s.right(3);// 取右边3个字符s.mid(2,4);// 从索引2开始取4个字符s.at(0);// 取第0个字符(只读)s[0];// 取第0个字符(可读可写)s.front();// 第一个字符s.back();// 最后一个字符

替换与删除

s.replace("Hello","Hi");// 替换s.remove(0,3);// 从索引0开始删除3个字符s.remove("llo");// 删除所有 "llo"

大小写转换

s.toUpper();// 转大写 "HELLO"s.toLower();// 转小写 "hello"

去除空白

s.trimmed();// 去除首尾空白(空格、换行、制表符)s.simplified();// 去除首尾空白 + 中间连续空白合并为一个空格

拆分与合并

// 拆分:字符串 → 列表QString csv="张三,李四,王五";QStringList list=csv.split(",");// list = ["张三", "李四", "王五"]// 合并:列表 → 字符串QString joined=list.join(" | ");// joined = "张三 | 李四 | 王五"

字符串与数值互转

// 字符串 → 数值QString s="123";s.toInt();// 123(int)s.toUInt();// 123(unsigned int)s.toLong();// 123Ls.toFloat();// 123.0fs.toDouble();// 123.0s.toLongLong();// 123LL// 带成功标志(推荐)boolok;intval=QString("abc").toInt(&ok);// ok = false, val = 0intval2=QString("456").toInt(&ok);// ok = true, val2 = 456// 数值 → 字符串QString::number(42);QString::number(3.14,'f',2);

比较

s1==s2;// 是否相等s1!=s2;// 是否不等s1.compare(s2);// 字典序比较(0=相等,<0 小于,>0 大于)s1.compare(s2,Qt::CaseInsensitive);// 忽略大小写比较

与 C 字符串互转

// QString → C 字符串s.toUtf8().constData();// 转 UTF-8 的 const char*(推荐)s.toLocal8Bit().constData();// 转本地编码的 const char*s.toStdString();// 转 std::string// C 字符串 → QStringQString::fromUtf8("Hello");// 从 UTF-8QString::fromLocal8Bit("Hello");// 从本地编码QString::fromStdString(stdStr);// 从 std::string

重复与填充

QString s=QString("abc").repeated(3);// s = "abcabcabc"QString s2=QString("%1").arg(42,5,10,QChar('0'));// s2 = "00042"(宽度5,不足补0)

QT常见基本数据类型

QT基本常见数据类型定义在#include<QtGlobal>中

整数类型

Qt 类型大小范围
qint8/quint81 字节-128 ~ 127 / 0 ~ 255
qint16/quint162 字节-32768 ~ 32767 / 0 ~ 65535
qint32/quint324 字节-2³¹ ~ 2³¹-1 / 0 ~ 2³²-1
qint64/quint648 字节-2⁶³ ~ 2⁶³-1 / 0 ~ 2⁶⁴-1
qlonglong/qulonglong8 字节同 qint64 / quint64

浮点类型

Qt 类型大小说明
qfloat162 字节IEEE 754 半精度浮点
float4 字节单精度(C++ 原生)
double8 字节双精度(C++ 原生)
qreal8 字节默认等同于double

字符类型

// QChar —— 存储单个 Unicode 字符(2字节)QChar ch1='A';QChar ch2=QChar(0x4E2D);// '中'(Unicode 编码)QChar ch3=QChar::fromLatin1('B');ch1.isUpper();// truech1.isDigit();// falsech1.toLower();// 'a'ch1.unicode();// 65(Unicode 码点)

字节数组

// QByteArray —— 存储原始字节数据QByteArraydata("Hello");data.append(" Qt");data.size();// 10data.at(0);// 'H'data.toHex();// "48656c6c6f205174"data.toBase64();// "SGVsbG8gUXQ="data.toUpper();// "HELLO QT"// 与 QString 互转QString str=QString::fromUtf8(data);QByteArray bytes=str.toUtf8();

万能容器

// QVariant —— 可存储几乎任何 Qt 类型QVariantv1(42);QVariantv2(3.14);QVariantv3(QString("Hello"));QVariantv4(QDate::currentDate());// 取值v1.toInt();// 42v2.toDouble();// 3.14v3.toString();// "Hello"v4.toDate();// QDate// 类型判断v1.typeName();// "int"v1.isValid();// true

日期与时间

// QDate —— 日期QDate d1=QDate::currentDate();// 今天QDated2(2026,7,7);// 指定日期d1.year();// 2026d1.month();// 7d1.day();// 7d1.dayOfWeek();// 2(周二)d1.daysInMonth();// 31d1.addDays(10);// 加10天d1.toString("yyyy-MM-dd");// "2026-07-07"QDate::fromString("2026-07-07","yyyy-MM-dd");// 字符串 → QDate// QTime —— 时间QTime t1=QTime::currentTime();// 当前时间QTimet2(14,30,0);// 14:30:00t1.hour();// 14t1.minute();// 30t1.second();// 0t1.addSecs(3600);// 加1小时t1.toString("HH:mm:ss");// "14:30:00"// QDateTime —— 日期 + 时间QDateTime dt1=QDateTime::currentDateTime();QDateTimedt2(QDate(2026,7,7),QTime(14,30));dt1.toString("yyyy-MM-dd HH:mm:ss");// "2026-07-07 14:30:00"dt1.toSecsSinceEpoch();// 时间戳(秒)QDateTime::fromSecsSinceEpoch(1751868600);// 时间戳 → QDateTime

容器类

// QList —— 有序列表(最常用)QList<int>list;list.append(1);list.append(2);list.append(3);list.at(0);// 1list.size();// 3list.contains(2);// truelist.removeAt(1);// 删除索引1的元素// QStringList —— 字符串列表(继承自 QList<QString>)QStringList sl;sl<<"张三"<<"李四"<<"王五";sl.append("赵六");sl.join(",");// "张三,李四,王五,赵六"sl.contains("李四");// truesl.sort();// 排序// QMap —— 有序键值对(按 key 排序)QMap<QString,int>map;map["语文"]=90;map["数学"]=95;map.insert("英语",88);map.keys();// ["语文", "数学", "英语"](有序)map.values();// [90, 95, 88]map.contains("数学");// true// QHash —— 无序键值对(查找更快)QHash<QString,int>hash;hash["语文"]=90;hash["数学"]=95;hash.keys();// 顺序不固定

几何与图形类型

// QPoint / QPointF —— 点(整数 / 浮点)QPointp1(10,20);p1.x();// 10p1.y();// 20// QSize / QSizeF —— 尺寸QSizes1(100,200);s1.width();// 100s1.height();// 200// QRect / QRectF —— 矩形(x, y, width, height)QRectr1(10,20,100,200);r1.x();// 10r1.width();// 100r1.center();// QPoint(60, 120)r1.contains(QPoint(50,50));// true// QColor —— 颜色QColorc1("red");QColorc2(255,128,0);QColorc3("#FF8000");c1.red();// 255c1.green();// 0c1.blue();// 0c1.name();// "#ff0000"

其他常用类型

类型说明示例
QUrlURL 地址QUrl("https://qt.io")
QSize尺寸(宽×高)QSize(800, 600)
QMargins四边边距QMargins(10, 5, 10, 5)
QUuid全局唯一标识符QUuid::createUuid().toString()
QRegExp/QRegularExpression正则表达式字符串匹配与提取
QPair<T1, T2>二元组QPair<QString, int>("age", 20)

使用建议

需求推荐类型
存储文本QString
存储二进制数据QByteArray
存储单个字符QChar
存储列表QList<T>/QStringList
存储键值对QMap(有序)/QHash(高性能)
存储不确定类型QVariant
存储日期时间QDateTime
跨平台整数qint32/qint64等
存储坐标/尺寸QPoint/QSize/QRect

类型转换关系总览

int/double/bool↕QString::number()/toInt()/toDouble()QString ↕toUtf8()/fromUtf8()QByteArray ↕ 构造函数/toXxx()QVariant(万能容器,可装以上所有类型)

基本覆盖了日常开发中 90% 以上的字符串操作场景。☀

相关新闻

  • 共享菜园行业深度分析:商业模式、运营数据与破局路径(2026)
  • 6轴IMU与运动控制MCU在智能穿戴中的精准运动追踪方案
  • 鸿蒙HAR混淆

最新新闻

  • DM8 守护集群+DMHS部署方案
  • pROC 1.18.5 实战:二分类诊断模型最佳截点确定与3个关键参数避坑指南
  • Speechless终极指南:3分钟学会微博内容PDF备份完整教程
  • 2026MP4转MP3,免费全解:电脑、手机、在线无水印工具完整实操指南
  • OpenCV vs MoviePy:2种Python视频帧提取方案对比,OCR字幕识别效率实测
  • AI Agent 的下一站:软件工厂,还是失控循环?

日新闻

  • PROPKA 3深度解析:蛋白质pKa预测的实战指南与算法原理
  • 微信小程序 globalData 监听:基于 Object.defineProperty 的 3 种实现方案对比
  • MySQL 8.0 数据清洗实战:3类异常值识别与 UPDATE/DELETE 批量处理

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号