【Qt-QString】

Qt编程指南

  • ■ QString
    • ■ 编码方式
    • ■ 下划线
    • ■ 制表符
    • ■ arg
    • ■ arg 数值转字符串补齐长度
    • ■ QString 转换为 char
    • ■ QString 转换为 char *
    • ■ char * 转换为 QString
    • ■ char[] 转换为QString
    • ■ char[] 转换为QString
    • ■ QByteArray 转换为 QString
  • ■ QByteArray
    • ■ QByteArray::fromHex("123456abcdef");。

■ QString

windows chcp linuxlocale可以查看系统的编码方式。

■ 编码方式

QString的内部编码方式是unicode,当char* 或std::string 转换成-QString时,默认char* 或std::string的编码方式为UTF-8.

■ 下划线

dialog->setLabelText(QFileDialog::Accept, 保存(&S));

■ 制表符

 QString text = "A\tA";

■ arg

//4代表宽度,10表示10进制,空位补零
QString str=QString("\"date -s %1-%2-%3 %4:%5:%6\"").arg(ui->spinBox_systemtime1->value(),4, 10, QLatin1Char('0')).arg(ui->spinBox_systemtime2->value(),2, 10, QLatin1Char('0')).arg(ui->spinBox_systemtime3->value(),2, 10, QLatin1Char('0')).arg(ui->spinBox_systemtime4->value(),2, 10, QLatin1Char('0')).arg(ui->spinBox_systemtime5->value(),2, 10, QLatin1Char('0')).arg(ui->spinBox_systemtime6->value(),2, 10, QLatin1Char('0'));QString(%1).arg(FullVersion[1], 2, 10, QChar('0'))     //2代表宽度,10表示10进制,空位补 QChar('0')//实现了从本地字符集GBK到Unicode的转换,
QString recordData = QString::fromLocal8Bit((const char*)&stFrame->data[5],stFrame->head.len-5);

■ arg 数值转字符串补齐长度

QString QString::arg(uint a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char( ' ' )) const
fieldWidth :格式化后的字符串宽度;
base :指定将整数a转换为字符串时使用的基数(默认是十进制),还可以是二进制2 ,十六进制 16;
fillChar :待填充字符//默认数值是3,填充长度为4,显示为10进制,长度不够就补0,最后字符串为“0003”
int num = 3;
QString  str = QString("%1").arg(num, 4, 10, QChar('0')); //补齐长度
qDebug() << str; // str == "0003"//可通过QString::number来决定保留小数点的位数
QString  str = QString::number(32, 'f', 2);
qDebug() << str; // str == "32.00"//将10进制的63变成16进制的3f
QString str;
str = QString("Decimal 63 is %1 in hexadecimal").arg(63, 0, 16); 
qDebug() << str; // str == "Decimal 63 is 3f in hexadecimal"//还可以根据不同国家的千位分隔符显示数值字符串
QLocale::setDefault(QLocale(QLocale::English, QLocale::UnitedStates));
QString  str = QString("normal:%1     long split: %L2   hexadecimal: %L3").arg(12345).arg(12345).arg(12345, 0, 16);    
qDebug() << str; // str == "normal:12345     long split: 12,345   hexadecimal: 3039"//arg %1 %2…%99位置替换为字符
//首先,arg(my)替换%1。然后arg(he)替换%2。最后,arg(word)替换%3。
QString my = "my";
QString he = " Hello ";
QString word = "Word";
QString str = QString("Look this is %1 And %2 : %3").arg(my).arg(he).arg(word);
qDebug() << str; // 输出 str = "Look this is my And  Hello  : Word"int seconds = m_calc.elapsed() / 1000;
int hour = int(seconds / 3600);
int min = int((seconds - hour * 3600) / 60);
int sec = seconds % 60;//QString格式化arg前面自动补0
QString str = QString("%1:%2:%3").arg(hour, 2, 10, QLatin1Char('0')).arg(min, 2, 10, QLatin1Char('0')).arg(sec, 2, 10, QLatin1Char('0'));
QStringList list;
list << tr("%1").arg(hour) << tr("%1").arg(min) << tr("%1").arg(sec);int val = 16;
//0f
QString str = QString("%1").arg(val & 0xFF, 2, 16, QLatin1Char('0'));//0016
QString str = QString("%1").arg(val, 4, 10, QLatin1Char('0'));
//4代表宽度,10表示10进制,空位补零

■ QString 转换为 char

QString  str;
char*  ch;
QByteArray ba = str.toLatin1(); // mustd
ch=ba.data();
方法2.QString 转换为 char *QString s2 = "Hello World 2!";QByteArray ba2;ba2.append(s2);     //也可以 ba2 = s2.toLatin1();const char *c2 = ba2.data();qDebug() << s2 << c2;

■ QString 转换为 char *

QString  filename;
std::string str = filename.toStdString();
const char* ch = str.c_str();
3.char * 转换为 QString
QString(const QLatin1String &str);
QLatin1String 的构造函数:QLatin1String(const char *str);
str = QString(QLatin1String(ch));

■ char * 转换为 QString

const char *c1 = "Hello World 1!";
QString s1(c1);
qDebug() << c1 << s1;

■ char[] 转换为QString

char ch_data[512]; 
QString str_data; 
str_data = QString::fromLocal8Bit(ch_data,512);中文都ok
uint8_t wifiName[MAX_NAME_LENGTH];
uint8_t wifiPassWord[MAX_NAME_LENGTH];
QString::fromUtf8((char*)wifiName)

■ char[] 转换为QString

typedef struct
{uchar   admission[20]; //住院号//DevType type,      //设备类型uchar   type;      //设备类型   devstat, syb, zsb, tci, hub,uchar   mode;      //设备型号  "TMS-1 =1,TMS-3 =3,TMS-5 =5"char    sn[30];    //设备序号
}Com_DevInfo;qDebug() << "m_devInfo" << QString(m_devInfo.sn) << endl;
qDebug() << "m_devInfo" << QString::fromLocal8Bit(m_devInfo.sn) << endl;
qDebug() << "m_devInfo" << QString((char*)m_devInfo.admission) << endl;
qDebug() << "m_devInfo" << m_devInfo.type << endl;
qDebug() << "m_devInfo" << m_devInfo.mode << endl;输出结果:
m_devInfo "2001"
m_devInfo "2001"
m_devInfo "abcdefg"

■ QByteArray 转换为 QString

quint8 data[100]={'1','2','3','1','2','3','1','2','3','1','2','3','1','2','3'};
QByteArray qa;
for (int i=0;i<100;i++) {qa.append(data[i]);
}
QString recordData(qa);
qDebug() << recordData << endl;     //123123123123123memcpy(net.wifiName,configJson->getKeyStringVal(wifiName).toLatin1().data(),configJson->getKeyStringVal(wifiName).size());
memcpy(net.wifiPassWord,configJson->getKeyStringVal(wifiPassWord).toLatin1().data(),configJson->getKeyStringVal(wifiPassWord).size());
QString swifi((char*)net.wifiName); QString swifip((char*)net.wifiPassWord);
qDebug() << net.wifiName << swifi << endl;
qDebug() << net.wifiPassWord << swifip << endl;  //出现乱码  net.wifiPassWord要清0 NetInfor net;      memset(&net,0,sizeof(NetInfor)); 然后在赋值

■ QByteArray

数字转字节数组。支持基数 236qDebug()<< QByteArray::number(0xaceb,2);qDebug()<< QByteArray::number(0xaceb,10);qDebug()<< QByteArray::number(0xaceb,16);

■ QByteArray::fromHex(“123456abcdef”);。

十六进制编码使用数字 0-9 和字母 a-f(小写)。如果分隔符不是 '\0',则分隔符插入到十六进制字节之间。QByteArray macAddress = QByteArray::fromHex("123456abcdef");qDebug()<< macAddress.toHex();     //returns "123456abcdef"qDebug()<< macAddress.toHex(':');   // returns "12:34:56:ab:cd:ef"qDebug()<< macAddress.toHex(0);   // returns "123456abcdef"
55
56
66struct msgBody
{quint32      msgLen;            //消息长度quint8      data[NET_SIZE];    //消息内容
};
qDebug() << msgFramePackage << QByteArray((char*)frame->body.data,frame->body.msgLen) << endl;




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/578072.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于Sneaky DogeRAT特洛伊木马病毒网络攻击的动态情报

一、基本内容 作为复杂恶意软件活动的一部分&#xff0c;一种名为DogeRAT的新开源远程访问特洛伊木马&#xff08;RAT&#xff09;主要针对位于印度的安卓用户发动了网络安全攻击。该恶意软件通过分享Opera Mini、OpenAI ChatGOT以及YouTube、Netfilx和Instagram的高级版本等合…

《PySpark大数据分析实战》-19.NumPy介绍ndarray介绍

&#x1f4cb; 博主简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是wux_labs。&#x1f61c; 热衷于各种主流技术&#xff0c;热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员&#xff08;PCTA&#xff09;、TiDB数据库专家&#xff08;PCTP…

饥荒Mod 开发(二三):显示物品栏详细信息

饥荒Mod 开发(二二)&#xff1a;显示物品信息 源码 前一篇介绍了如何获取 鼠标悬浮物品的信息&#xff0c;这一片介绍如何获取 物品栏的详细信息。 拦截 inventorybar 和 itemtile等设置字符串方法 在modmain.lua 文件中放入下面代码即可实现鼠标悬浮到 物品栏显示物品详细信…

适合引流源码声音鉴定神器网站源码,轻松吸引用户关注

源码介绍 声鉴卡HTML5网页源码&#xff0c;完整可运转&#xff0c;调用wx录音&#xff0c;自动判断声音属性&#xff0c;输出结果 安装教程 只需要把源码上传至主机空间就可以 支持上传二级目录访问&#xff01;提示一下&#xff1a;wxvx打开效果是最佳的源码里面生成二维码…

测试服务器带宽(ubuntu)

apt install python3 python3-pippip3 install speedtest-clispeestest-cli

Debezium发布历史27

原文地址&#xff1a; https://debezium.io/blog/2018/01/25/debezium-0-7-2-released/ 欢迎关注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻译&#xff0c;仅供参考&#xff0c;笔芯笔芯. Debezium 0.7.2 发布 一月 25, 2018 作者&#xff1a; Gunnar Morling 发…

Hive05_DML 操作

1 DML 数据操作 1.1 数据导入 1.1.1 向表中装载数据&#xff08;Load&#xff09; 1&#xff09;语法 hive> load data [local] inpath 数据的 path [overwrite] into table student [partition (partcol1val1,…)];&#xff08;1&#xff09;load data:表示加载数据 &…

数据库添加/删除/修改表字段

目录 添加表字段 删除表字段 修改表字段 添加表字段 要在数据库中添加表字段&#xff0c;可以使用ALTER TABLE语句。 语法如下&#xff1a; ALTER TABLE table_name ADD column_name datatype;其中&#xff0c;table_name是要添加字段的表名&#xff0c;column_name是要添…

目标:三年内练就一口流利的英语

置顶&#xff0c;不删。三年后的今天来评论区分享学习成果

wpf-MVVM绑定时可能出现的内存泄漏问题

文章速览 引言错误示范示例1示例2 坚持记录实属不易&#xff0c;希望友善多金的码友能够随手点一个赞。 共同创建氛围更加良好的开发者社区&#xff01; 谢谢~ 引言 正确结构&#xff1a; Model <——> ViewModel <——> View 但很多时候&#xff0c;很容易出现…

前端---表单标签

1. 表单的介绍 表单用于搜集不同类型的用户输入(用户输入的数据)&#xff0c;然后可以把用户数据提交到web服务器 。 2. 表单相关标签的使用 <form>标签 表示表单标签&#xff0c;定义整体的表单区域 <label>标签 表示表单元素的文字标注标签&#xff0c;定义文字…

lodash源码分析每日一练 - 数组 - fromPairs

今日分享&#xff1a; 每一步都是曼妙的风景~ _.fromPairs(pairs) 使用&#xff1a; 这个方法返回一个由键值对pairs构成的对象。 使用示例&#xff1a; _.fromPairs([[fred, 30], [barney, 40]]); // > { fred: 30, barney: 40 }尝试手写&#xff1a; ①返回新对象 ②…

Redis数据结构(常用5+4种特殊数据类型)

1、Redis 数据类型以及使用场景分别是什么&#xff1f; Redis 提供了丰富的数据类型&#xff0c;常见的有五种数据类型&#xff1a;String&#xff08;字符串&#xff09;&#xff0c;Hash&#xff08;哈希&#xff09;&#xff0c;List&#xff08;列表&#xff09;&#xff…

119. 杨辉三角 II(Java)

给定一个非负索引 rowIndex&#xff0c;返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: rowIndex 3 输出: [1,3,3,1]示例 2: 输入: rowIndex 0 输出: [1]示例 3: 输入: rowIndex 1 输出: [1,1]提示…

通过自然语言处理增强推荐系统:协同方法

一、介绍 自然语言处理 (NLP) 是人工智能的一个分支&#xff0c;专注于使机器能够以有意义且有用的方式理解、解释和响应人类语言。它包含一系列技术&#xff0c;包括情感分析、语言翻译和聊天机器人。 另一方面&#xff0c;推荐系统&#xff08;RecSys&#xff09;是旨在向用户…

Android笔记(二十一):Room组件实现Android应用的持久化处理

一、Room组件概述 Room是Android JetPack架构组件之一&#xff0c;是一个持久处理的库。Room提供了在SQLite数据库上提供抽象层&#xff0c;使之实现数据访问。 &#xff08;1&#xff09;实体类&#xff08;Entity&#xff09;&#xff1a;映射并封装了数据库对应的数据表中…

LeetCode——1276. 不浪费原料的汉堡制作方案

通过万岁&#xff01;&#xff01;&#xff01; 题目&#xff0c;给你两个数tomatoSlices和cheeseSlices&#xff0c;然后每制作一个巨无霸汉堡则消耗4个tomatoSlices和1和cheeseSlices&#xff0c;每制作一个小皇堡则需要消耗2个tomatoSlices和1和cheeseSlices。问给你这两个…

彻底卸载Keil4

彻底卸载Keil4 双击 然后回到该软件的文件夹位置&#xff0c;把该文件夹删除即可&#xff0c;然后清一下回收站。

Leetcode 1349. 参加考试的最大学生数(Java + 按行状压暴力 + DP)

文章目录 题目思路Java 按行状压暴力 DP&#xff1a;第 1 步&#xff1a;第 2 步&#xff1a;第 3 步&#xff1a;第 4 步&#xff1a; 复杂度Code 题目 Problem: 1349. 参加考试的最大学生数给你一个 m * n 的矩阵 seats 表示教室中的座位分布。如果座位是坏的&#xff08;…

【Midjourney】Midjourney提示词格式详解

目录 &#x1f347;&#x1f347;Midjourney是什么&#xff1f; &#x1f349;&#x1f349;Midjourney怎么用&#xff1f; &#x1f514;&#x1f514;Midjourney提示词格式 &#x1f341; 1.模型版本提示词&#x1f341; 参数 参数详解 应用示例 &#x1f343; 2.风格…