先加下头文件
#include <QMainWindow>
#include <QFile>
#include <QFileDialog>
#include <QMessageBox>
#include <QTime>
#include <QTextStream>
#include <QDebug>
#include <qtextcodec.h>
可以自己在桌面上新建一个中文的文件,里面放一个txt文件,然后试下
主要代码如下:
//可以自己在桌面上新建个中文路径,写个txt文件来进行尝试下,就可以解决中文下的问题
void MainWindow::on_pushButton_clicked()
{
QString fileName1;
fileName1 = QFileDialog::getOpenFileName(this,
tr("Open File"), ".", tr("*.ini *.txt"));
//方法1:C++方式
//std::wstring str_STL(fileName1.toStdWString());//先要转成宽字符
//QString filename = QString::fromStdWString(str_STL);//支持中文路径,再转换为QString
//方法2:qt方式
QTextCodec *code = QTextCodec::codecForName("UTF-8");
QString filename = QString::fromStdString(code->fromUnicode(fileName1).data());
QFile file(filename);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
return;
}
QTextStream txtInput(&file);
QString str ;
while (!txtInput.atEnd())
{
str = txtInput.readLine();
}
qDebug()<<"str ="<<str;
}
QString中有中文转const char*
QString fileName = "测试状态";
QByteArray byteArray = fileName.toLocal8Bit();
const char* test = byteArray.constData();