文章目录 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 ( ) ; // 123L s. toFloat ( ) ; // 123.0f s. toDouble ( ) ; // 123.0 s. toLongLong ( ) ; // 123LL // 带成功标志(推荐) bool ok; int val= QString ( "abc" ) . toInt ( & ok) ; // ok = false, val = 0 int val2= 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 字符串 → QString QString :: fromUtf8 ( "Hello" ) ; // 从 UTF-8 QString :: 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 ( ) ; // true ch1. isDigit ( ) ; // false ch1. toLower ( ) ; // 'a' ch1. unicode ( ) ; // 65(Unicode 码点) 字节数组 // QByteArray —— 存储原始字节数据 QByteArraydata ( "Hello" ) ; data. append ( " Qt" ) ; data. size ( ) ; // 10 data. 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 ( ) ; // 42 v2. toDouble ( ) ; // 3.14 v3. toString ( ) ; // "Hello" v4. toDate ( ) ; // QDate // 类型判断 v1. typeName ( ) ; // "int" v1. isValid ( ) ; // true 日期与时间 // QDate —— 日期 QDate d1= QDate :: currentDate ( ) ; // 今天 QDated2 ( 2026 , 7 , 7 ) ; // 指定日期 d1. year ( ) ; // 2026 d1. month ( ) ; // 7 d1. day ( ) ; // 7 d1. dayOfWeek ( ) ; // 2(周二) d1. daysInMonth ( ) ; // 31 d1. 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:00 t1. hour ( ) ; // 14 t1. minute ( ) ; // 30 t1. second ( ) ; // 0 t1. 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 ) ; // 1 list. size ( ) ; // 3 list. contains ( 2 ) ; // true list. removeAt ( 1 ) ; // 删除索引1的元素 // QStringList —— 字符串列表(继承自 QList<QString>) QStringList sl; sl<< "张三" << "李四" << "王五" ; sl. append ( "赵六" ) ; sl. join ( "," ) ; // "张三,李四,王五,赵六" sl. contains ( "李四" ) ; // true sl. 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 ( ) ; // 10 p1. y ( ) ; // 20 // QSize / QSizeF —— 尺寸 QSizes1 ( 100 , 200 ) ; s1. width ( ) ; // 100 s1. height ( ) ; // 200 // QRect / QRectF —— 矩形(x, y, width, height) QRectr1 ( 10 , 20 , 100 , 200 ) ; r1. x ( ) ; // 10 r1. width ( ) ; // 100 r1. center ( ) ; // QPoint(60, 120) r1. contains ( QPoint ( 50 , 50 ) ) ; // true // QColor —— 颜色 QColorc1 ( "red" ) ; QColorc2 ( 255 , 128 , 0 ) ; QColorc3 ( "#FF8000" ) ; c1. red ( ) ; // 255 c1. green ( ) ; // 0 c1. blue ( ) ; // 0 c1. 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% 以上的字符串操作场景。☀