做串口通信时,碰到这样的问题,在Qt的界面中,我用QLineEdit对象负责显示发送和接收的文本,对其中的数据进行读取和显示使用的数据类型都是QString;但是,在对串口设备进行读写时,数据使用的形式都是char型指针(不知道是不是我理解的不透彻),所以就要解决QString和char型数组之间的转换。
查阅了一些资料,并经过自己的验证,找到了下面的解决办法:
1、char型数组或字符串指针转换成QString
char str_data[512];
QString qs_data;
............
qs_data = QString::fromLocal8Bit(str_data,512); //当然也可以用强制类型转换QString(str_data)
2、QString类型转换为 char指针类型
const char * str_data; //这里一定要加上const,否则会报错!
QString qs_data;
...........
str_data = qs_data.ascii();
这里我只给出了一种转换方法,并经过我的验证是可以使用的。其实还有很多办法可以实现转换,并可能比这个简单很多,大家可以尝试下!
这里给希望深入学习Qt的朋友介绍个很好的网站,自己感觉很受用,可能很多人都知道这个网址:http://doc.trolltech.com/3.3/index.html
#Qt
cyq (2013-11-21 9:44:19)
view plain
//#include "myclass.h"
#include <QtGui/QApplication>
#include <QtDebug>
#include <QString>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QString str = “hello”; //QString转char *
QByteArray ba = str.toLatin1();
char *mm = ba.data();
qDebug()<<mm<<endl; //调试时,在console中输出
QString nn = QString(QLatin1String(mm)); //char *转QString
qDebug()<<nn<<endl; //调试时,在console中输出
//MyClass w;
//w.show();
return a.exec();
}
查阅了一些资料,并经过自己的验证,找到了下面的解决办法:
1、char型数组或字符串指针转换成QString
char str_data[512];
QString qs_data;
............
qs_data = QString::fromLocal8Bit(str_data,512); //当然也可以用强制类型转换QString(str_data)
2、QString类型转换为 char指针类型
const char * str_data; //这里一定要加上const,否则会报错!
QString qs_data;
...........
str_data = qs_data.ascii();
这里我只给出了一种转换方法,并经过我的验证是可以使用的。其实还有很多办法可以实现转换,并可能比这个简单很多,大家可以尝试下!
这里给希望深入学习Qt的朋友介绍个很好的网站,自己感觉很受用,可能很多人都知道这个网址:http://doc.trolltech.com/3.3/index.html
#Qt
cyq (2013-11-21 9:44:19)
view plain
//#include "myclass.h"
#include <QtGui/QApplication>
#include <QtDebug>
#include <QString>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QString str = “hello”; //QString转char *
QByteArray ba = str.toLatin1();
char *mm = ba.data();
qDebug()<<mm<<endl; //调试时,在console中输出
QString nn = QString(QLatin1String(mm)); //char *转QString
qDebug()<<nn<<endl; //调试时,在console中输出
//MyClass w;
//w.show();
return a.exec();
}