您的位置:首页 > 大数据

QT大数据查询项目详解,解决中文乱码

2018-03-19 08:45 288 查看
掌握listview,model/view,中文乱码
别打我数据的注意
开源项目: https://github.com/zhuimengshaonian66/datasearch-by-QT


第一步:建立UI



第二步处理鼠标点击,toLocal8Bit()将文本框文字转为本地,就是我的gb2312编码。
void MainWindow::on_pushButton_clicked()
{
QString temp = ui->lineEdit->text();
QByteArray qstr =temp.toLocal8Bit();
const char *name = qstr.data();
thread = new mythread(slm,name);
thread->run();
printf("%s",(char *)temp.data());
}


新建线程,专心处理数据查询
查询的数据也是gb2312编码的,所以和文本框的文本使用strstr来匹配。
匹配完成,将str转换为unicode,才能插入到listview中。
QTextCodec *codec = QTextCodec::codecForName("gb2312");
QString qstrall =codec->toUnicode(str);

void mythread::run()
{
FILE * pf = fopen("E:\\test\\dangdangwang.txt","r");
if(pf==NULL){
return;
}
int i = 0;
while(!feof(pf)){
char str[1024]={0};
fgets(str,1023,pf);
if(str){
if(strstr(str,_name)){
QTextCodec *codec = QTextCodec::codecForName("gb2312");
QString qstrall =codec->toUnicode(str);
qDebug()<<i++<<endl;
qDebug()<<qstrall<<endl;
// sl->append(qstrall);
e.processEvents();
_listvi->insertRows(0, 1);
QModelIndex index = _listvi->index(0);
_listvi->setData(index, qstrall);
}
}
}
fclose(pf);
}


9c54
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  QT 数据查询