qt菜鸟记录贴
包含头文件:
#include <QFile>
#include <QFileDialog>
代码:
//点击按钮后打开文件选择
void MainWindow::on_pushButton_clicked()
{
//打开文件选择控件
QString fileName;
fileName = QFileDialog::getOpenFileName(this,tr("文件"),"",tr("text(*.txt)"));
//打开选择的txt文件并显示
QFile file(fileName);
file.open(QIODevice::ReadOnly | QIODevice::Text);
QByteArray t = file.readAll();
ui->Output->setText(QString(t));
file.close();
}
效果:
点击前:
点击后:
文件输出:
发现中文乱码,解决方案:
在默认情况下,Qt 以 Unicode 格式处理文本字符,因此,字符本身是不会有问题的。之所以出现乱码,原因在于 Qt 不知道将 Unicode 字符以何种方式显示出来。
加入头文件:#include <QTextCodec>
选择转换格式为GBK:QTextCodec *codec=QTextCodec::codecForName(“GBK”);
转换字符:QString str = codec->toUnicode((t)); //为输入字符串
最终代码:
//点击按钮后打开文件选择
void MainWindow::on_pushButton_clicked()
{
//打开文件选择控件
QString fileName;
fileName = QFileDialog::getOpenFileName(this,tr("文件"),"",tr("text(*.txt)"));
//打开选择的txt文件并显示
QFile file(fileName);
//GBK方式
QTextCodec *codec=QTextCodec::codecForName("GBK");
file.open(QIODevice::ReadOnly | QIODevice::Text);
QByteArray t = file.readAll();
//转换读取数据并显示
QString str = codec->toUnicode((t));
ui->FileOutput->setText(QString(str));
file.close();
}