Qt作为常用的UI设计软件,我们经常用到它完成一些UI的设计,以下便是实现通过选择文件实现读取文件内容的点击函数部分。
********************************分割线---------------------------------------------
1.使用fstream
void MainWindow::on_pushButton_clicked()
{
char *buf = new char[1024];
QString filename;
int filesize = 0;
filename = QFileDialog::getOpenFileName(this,tr("file"),"",tr("all(**)"));
//文件选择类型为*任意
QByteArray ba = filename.toLatin1();
char *Tsfilename = ba.data();//QString转char *
fstream fp;
fp.open(Tsfilename,ios::in);//读入打开权限
if(!fp.is_open())
{
qDebug()<<"open failed";
}
fp.seekg(0,ios::end);
filesize = fp.tellg();
int first_size = filesize;
fp.seekg(0,ios::beg);//计算文件大小后归位置零
while(first_size > 0)
{
fp.read(buf,1024);
first_size -= 1024;
for(int i = 0;i < 1024;i++)
{
cout<<buf[i];
}
cout<<endl;
}
fp.close();
qDebug()<<"first read over"<<endl;
delete []buf;
}
********************************分割线---------------------------------------------
2.Qfile
void MainWindow::on_pushButton_clicked()
{
unsigned char *buf = new unsigned char[188];
QString filename;
int filesize = 0;
filename = QFileDialog::getOpenFileName(this,tr("file"),"",tr("ts(*.txt);;pic(*.jpg);;all(*)"));
//设置多种类型支持txt、jpg以及任意文件类型
QFile fp(filename);//直接打开指定路径的文件
if(!fp.open(QIODevice::ReadOnly))
qDebug()<<"open falid";
else
qDebug()<<"open success";//判断打开文件是否成功
QTextStream stream(&fp);
filesize = fp.size();
while(filesize > 0)
{
fp.read((char *)buf,1024);
filesize -= 1024;
for(int i = 0;i < 1024;i++)
{
cout<<buf[i];
}
cout<<endl;
}
fp.close();
qDebug()<<"TS OVER"<<endl;
delete []buf;
}