最近一直在用QT,但是学的还不够深入,今天遇到了一个问题,在此记录下来,以便以后查阅:
事情是这样的:在界面中的QLineEidt里面输入一串地址数据,在代码里把它读取过来,然后去访问这个地址,但是通过QLineEdit的text()方法读取到的数据时QString类型的,而访问地址函数的这个参数类型是const char*的,这就需要把QString转化为const char*类型,我在网上搜了下,先使用toAscii()转化为一个QByteArray类型对象,然后再调用它的data()或constData()函数即可。这里我用了constData()函数。即:
QLineEdit *aLineEdit = new QLineEdit();
const char * tagName = aLineEdit->text().toAscii().constData();
qDebug()<<"---------调试-------"<<tagName<<endl;
此时,输出的事乱码。而如果我这样写(直接打印,不去定义一个const char* 变量):
//前面语句一样
qDebug()<<"---------调试-------"<<aLineEdit->text().toAscii().constData()<<endl;
就可以正确打印出来。
目前,我还不知道这是什么原因,先记录之,以供参考。