qbytearray

Converting QImage to QByteArray using QDataStream

China☆狼群 提交于 2021-02-11 14:00:20
问题 Im trying to convert a QImage that maked from ScreenShot to a QByteArray for sending via QTCPSocket. when i convert QImage to QByteArray and before sending it i try to deserialize and show it on label it cant ! what's my mistake? thx for helping. QByteArray ImClientShooter::toQByteArray(QImage &img) { QByteArray temp; QDataStream data(&temp, QIODevice::ReadWrite); data « img; return temp; } QByteArray goOn{toQByteArray(sampleQImage)}; //sampleQImage is a QImage Object lbl->setPixmap(QPixmap:

qt串口通信(vs版本)

走远了吗. 提交于 2020-02-21 07:17:19
最近在搞串口通信,记录一下: 配置: 1.首先将Qt5SerialPort.lib的库引入,其位置在qt的安装路径下的lib中可以找到 2.加入头文件 #include <QtSerialPort/qserialport.h> #include <QtSerialPort/qserialportinfo.h> 3.打开串口 //打开串口 void demo::OpenCom() { serialIo->setPortName(“COM3”); //串口名 if (serialIo->open(QIODevice::ReadWrite)) { qint32 baudrate = 9600; serialIo->setBaudRate(baudrate);//波特率 serialIo->setDataBits(QSerialPort::Data8); //数据位 serialIo->setParity(QSerialPort::NoParity); //校验位 serialIo->setStopBits(QSerialPort::OneStop);//停止位 serialIo->setFlowControl(QSerialPort::NoFlowControl); } } 4.串口发送数据通信 //发送接收数据 void demo::SendData() { QString

Qt5基于smtp服务发送电子邮件

做~自己de王妃 提交于 2020-02-17 05:37:41
1、设置邮箱 先登录163邮箱,然后在邮箱界面找到设置,在里面开通smtp服务。 这一步比较关键,要开通smtp服务,在开通的过程中会让你输入一个邮箱客户端授权码,这个才是你后面要用到的密码,而不是你登陆邮箱的密码; 2. telnet命令发送邮件 打开cmd. 1. 输入 telnet smtp.163.com 25 回车 我试验了好几个邮箱服务器,大都有严厉的反垃圾邮件系统,导致邮件发不出去,幸好163的邮箱竟然可以.TX威武呀.smtp的协议端口为25. 2. 输入 HELO smtp.163.com 回车 我搜集的一些资料中既有使用helo又有使用ehlo的,结果还使我纠结了好久,后来又google才知道,原来都可以.这句应该是与服务器打招呼.如果返回250表示服务器准备就绪,可以进行下一步了. 3. 输入 AUTH LOGIN 回车 这是指定登录的模式,这句应该是一般模式.返回334就可以进行下一步了. 4. 输入 经过base64加密的你的账户名,比如你的邮箱账号号是xxxxxx@163.com,就去百度下 base64加密这个邮箱账号(是加密整个邮箱账号),copy到命令行回车返回334 5.输入对应的授权码(base64加密这个授权码),注意是163邮箱的授权码,不是密码。回复235 Authentication successful表示验证通过,可以进行下一步了.

Qt串口通信,QSerialPort的使用

本秂侑毒 提交于 2020-02-13 15:54:11
前言 Qt写上位机时,串口通信是个常用功能,在Qt4的时候有第三方模块QextSerialPort,到了Qt5.1官方提供了QSerialPort模块。 目录 前言 获取串口信息:QSerialPortInfo 串口IO操作:QSerialPort 实例操作 补充:16进制文本(如“0A 13 EF”)转16进制数据(如0x0A 0x13 0xEF) 使用该模块需要在pro文件中添加: QT += serialport 主要使用两个类:QSerialPort和QSerialPortInfo 获取串口信息:QSerialPortInfo 获取串口名列表 QStringList slist; foreach ( const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) { //检测是否可用 f(!info.isBusy()) slist<<info.portName(); } 除了串口名还能获取其他的相关信息,可以看文档,或者该链接 https://blog.csdn.net/mcu_tian/article/details/43527385 串口IO操作:QSerialPort 串口IO的主要操作有参数设置/开/关/读/写等 //[1]串口设置 QSerialPort *serialIo= new

Qt学习笔记之 字符串类型小结

一世执手 提交于 2020-02-02 01:12:25
1. Qt常用字符串类型 1.1 QString QString是Unicode编码的字符串,存储一系列16位的QChar,每一个QChar对应一个Unicode 4.0编码的字符,详见《 Qt学习笔记之QString 》。 1.2 QByteArray QByteArray是个字节数组,可以存储原始字节(包括一系列'\0')和传统的8位'\0'结尾的字符串,每一个字节存储为char类型的数据; 虽然QString用得更普遍和方便,但当需要存储原始的二进制数据或者内存保护要求严格时,用QByteArray比用QString更合适,详见《 Qt学习笔记之QByteArry 》。 1.3 QChar QChar存储一个16位(2个字节)的Unicode字符,数据的存储类型为ushort(unsigned short),详见《 Qt学习笔记之QChar 》。 1.4 QLatin1Char QLatin1Char是个结构体,存储一个8位ASCII/Latin-1编码的字符,数据的存储类型为char,详见《 Qt学习笔记之QLatin1Char 》。 2. Qt字符串类型见转换 2.1 QByteArray、char *与QString互转 QByteArray与QString互转极为简单,二者从本质上类似,都是连续存储,区别是前者可以存无法显示的字符,后者只存可显示的字符

Qt学习笔记之QByteArry

半世苍凉 提交于 2020-01-31 23:29:30
QByteArray类具有一个字节数组,它既可以存储原始字节(raw bytes),也可以存储传统的以“\0”结尾的8位字符串。在Qt中,使用QByteArray比使用const char*更方便,而QByteArray也支持隐式共享。 1.QByteArray初始化 QByteArray ba; ba.resize(2); ba[0] = 1; ba[1] = 2; ba[2] = 3; QByteArray ba("hello world); QByteArray ba; ba = "hello world"; 2. QByteArry的访问 1、访问方式共有四种:[]、data[]和at()、 constData[]; 2、[]和data[]为可读可写; 3、at()和constData[]仅为可读。如果仅是读,则通过at()和constData[]访问速度最快。 2. QByteArray成员函数 char *QByteArray::data() 返回指向字节数组中存储的数据的指针。该指针可用于访问和修改组成数组的字节 QByteArray &QByteArray::fill(char ch, int size = -1) 将字节数组中的每个字节设置为字符ch。如果size与-1(默认值)不同,则字节数组将预先调整为大小 nt QByteArray::indexOf

QByteArray详解

倖福魔咒の 提交于 2020-01-25 10:53:08
QByteArray在串口通讯中经常被使用,有一定必要较为全面详细的对QByteArray进行阐述。本文通过以下几个部分加以介绍: 1. 初始化 2. 访问与赋值 3. 添加、删除、插入与替换操作 4. 查找与比较 5. 数据转换与处理 1 初始化 2 访问与赋值 访问QByteArray主要有4中方式,分别为[]、at()、data[]和constData[]。其中[]和data[]为可读可写,at()和constData[]仅为可读。如果仅是读,则通过at()和constData[]访问速度最快,因可避免复制处理。示例如下: QByteArray ba; ba.resize(6); ba[0] = 0x3c; ba[1] = 0xb8; ba[2] = 0x64; ba[3] = 0x18; ba[4] = 0xca; ba.data()[5] = 0x31; qDebug()<<"[]"<<ba[2]; //[] d qDebug()<<"at()"<<ba.at(2); //at() d qDebug()<<"data()"<<ba.data()[2]; //data() d qDebug()<<"constData()"<<ba.constData()[2]; //constData() d qDebug()<<"constData()"<<ba.constData()

QT项目性能调优小记

笑着哭i 提交于 2020-01-04 22:46:54
最近的项目用到了QT 5.5,项目在运行过程中出现了一段时间CPU占用率持续25%,并频繁断网的情况,遂决定对项目性能进行优化。 优化工具也是VS2010自带的性能分析工具,具体的使用方法参见: http://www.cnblogs.com/smark/archive/2011/10/12/2208039.html 其中可以选择“just my code”过滤出自己编写的代码。 通过性能分析工具可以找到占用CPU时间较多的函数,然后按照占有时间多少进行优化->再分析->再优化的步骤,多次优化后,将CPU占用率降到了2%以下。下面将对性能优化提升较大的几个优化步骤进行记录: 1.优化字符串格式化方法。 项目中有将QByteArray中的二进制数如”123”格式化成”31, 32, 33”的功能,使用的代码如下: 1 QByteArray msg = xxx 2 3 QString str; 4 5 foreach (quint8 b, msg) 6 7 { 8 9 str.append(QString().sprintf(“%02X”, b)); 10 11 } View Code 当msg中包含6,7w个字符时,在lz酷睿2代i5的机器上,这段代码需要执行4到5s,因为其中的QString会调用new函数6,7w此,对性能影响极大。优化后的代码如下: 1 QString

Convert QString into QByteArray with either UTF-8 or Latin1 encoding

只谈情不闲聊 提交于 2020-01-01 05:18:25
问题 I would like to covert a QString into either a utf8 or a latin1 QByteArray, but today I get everything as utf8. And I am testing this with some char in the higher segment of latin1 higher than 0x7f, where the german ü is a good example. If I do like this: QString name("\u00fc"); // U+00FC = ü QByteArray utf8; utf8.append(name); qDebug() << "utf8" << name << utf8.toHex(); QByteArray latin1; latin1.append(name.toLatin1()); qDebug() << "Latin1" << name << latin1.toHex(); QTextCodec *codec =

QByteArray to QString

大兔子大兔子 提交于 2019-12-30 00:15:24
问题 I'm having issues with QByteArray and QString . I'm reading a file and stores its information in a QByteArray . The file is in unicode, so it contains something like: t\0 e\0 s\0 t\0 \0 \0 I'm trying to compare this value to my specified value, but it fails, because in the debugger I see it's not an unicode string. The code will explain everything: QByteArray Data; //contains unicode string "t\0 e\0 s\0 t\0 \0 \0" QString myValue = "test"; //value to compare. if(Data.contains(myValue)) //do