先啰嗦几句,既然是Qt的学习之路,那我们就从最原始的开始讲。
我们很多从C++转向学Qt的人们开始遇到QString就蒙了,QString到底怎么输出,我最起码得把“Hello World”得输出吧,那我们知道Qt是对C++的扩展,如果我们知道了Char*的值,那不就可以输出数据了!哈哈..现在我们把QString类型的转化为char*.
一.QString向char*的转换(我的代码实在类似于MainWindows.cpp的构造函数中)
方法1:
QString Qstr;
char* c;
QByteArray byteArray=Qstr.toLatin1();
c=byteArray.data();
例子:
QString Qstr("nihao");
char* c;
QByteArray byteArray=Qstr.toLatin1();
c=byteArray.data();
ui->textEdit->setText(c);//textEdit为创建的textEdit,ui你把它看成是界面的对象,界面的所有控件都通过它访问
结果:nihao //在textEdit上输出“nihao”
方法2:
QString Qstr;
string str=Qstr.toStdString(); //注意:包含在文件开始添加string库和命空间,代 码如下:
//#iinclude<string>
//using namespace std;
const char* c=str.c_str();
例子:
QString Qstr("Hello");
string str=Qstr.toStdString();
const char* c=str.c_str();
ui->textEdit->setText(c);
结果:nihao //在textEdit上输出“nihao”
方法3:
QString Qstr;
char *c;
c=Qstr.toLocal8Bit.data();
例子:
char *c;
QString Qstr("nihao");
c=Qstr.toLocal8Bit().data();
ui->textEdit->setText(c);
结果:nihao //在textEdit上输出“nihao”
二:char*向QString的转换
方法1:(最便捷也是最好用的)
char *c;
QString Qstr(c);
例子:
char *c="nihao";
QString Qstr(c);
ui->textEdit->setText(Qstr);
结果:nihao //在textEdit上输出“nihao”
方法2:
char *c;
QString Qstr;
Qstr=QString(QLatin1String(c));
例子:
char *c="nihao";
QString Qstr;
Qstr=QString(QLatin1String(c));
ui->textEdit->setText(Qstr);
结果:nihao //在textEdit上输出“nihao”
三.汉字的输出
经常会有朋友想在Qt中输入汉字后,再将汉字输出出来。可是输出后的结果很让人头疼,都是些让人看不懂的东西,那该怎么办?不多说直接解决问题!
1.QString直接赋值汉字
QString Qstr;
Qstr=QString::fromUtf8("你好");
ui->textEdit->setText(Qstr);
结果:你好 //在textEdit上输出“nihao”
有人就说了一看上面的代码,你这不是糊弄人嘛,直接给QString类型的输入汉字,有本事汉字给char*,让它输出。好的,看下面:
2.char*中的汉字到QString
char* c="你好";
QString Qstr=QString::fromUtf8(c);
ui->textEdit->setText(Qstr);
结果:你好 //在textEdit上输出“nihao”
网上有好多人对Qt的QString很迷惑,希望我的这篇博客能够帮到需要的人,以上所有的代码都是经过测试的,如果大家有什么问题可以留言,我们相互讨论共同成长。