例如文件为throughput.txt:
time1:23.6
time2:21.5
time3:12.3
time4:19.6
...
找了好多本书,没有类似的例子,大部分都是如何读取txt数据的例子程序,没有显示也不知道最终有没有读进来~~
QFile fp("123.txt");
QVector<int> array;
if(fp.open(fp.ReadOnly))
{
QTextStream ts(&fp);
while(!ts.atEnd())
{
static int buf;
ts>>buf;
array.append(buf);
}
fp.close();
}
求一个例子程序啊~~
13 个解决方案
#1
http://qimo601.iteye.com/blog/1470944
Qfile类来实现你的要求,楼主参考上面链接的内容,我想你就明白了,很简单的。
Qfile类来实现你的要求,楼主参考上面链接的内容,我想你就明白了,很简单的。
#2
谢谢哦~~我先看看,不懂了再问~~
#3
class TestReadFile : public QWidget
{
Q_OBJECT
public:
TestReadFile() : QWidget()
{
treeWidget = new QTreeWidget(this);
treeWidget->setColumnCount(2);
QStringList strColumnTitle;
strColumnTitle.append(tr("时间"));
strColumnTitle.append(tr("吞吐量"));
treeWidget->setColumnWidth(0,80);
treeWidget->setColumnWidth(1,50);
treeWidget->setHeaderLabels(strColumnTitle);
treeWidget->setSelectionMode(QAbstractItemView::SingleSelection);
editFileName = new QPlainTextEdit(this);
editFileName->setMaximumWidth(50);
editFileName->setMaximumHeight(30);
btnDoProcess = new QPushButton(this);
btnDoProcess->setText(tr("读取"));
btnDoProcess->setMaximumWidth(50);
QVBoxLayout* layout = new QVBoxLayout(this);
layout->addWidget(editFileName);
layout->addWidget(btnDoProcess);
layout->addWidget(treeWidget);
connect(btnDoProcess,SIGNAL(clicked()),this,SLOT(doProcess()));
setLayout(layout);
}
~TestReadFile() {}
private slots:
void doProcess()
{
QString fileName = QApplication::applicationDirPath() + "\\" + editFileName->toPlainText();
QFile fp(fileName);
QVector<float> valueArray;
if(fp.open(fp.ReadOnly))
{
QTextStream ts(&fp);
QString strLine = "";
QStringList NVPair;
bool bSuccess = false;
float fTime = 0.0f;
while(!ts.atEnd())
{
strLine = ts.readLine();
NVPair = strLine.split(":");
if (NVPair.size() != 2)
continue;
fTime = NVPair[1].toFloat(&bSuccess);
if (bSuccess)
{
QTreeWidgetItem* newItem = new QTreeWidgetItem(treeWidget, NVPair);
valueArray.append(fTime);
}
}
fp.close();
}
}
private:
QTreeWidget *treeWidget;
QPlainTextEdit *editFileName;
QPushButton *btnDoProcess;
};
拿到每一行自己用QString进行解析。
结果保存在valueArray中。
#4
放到一个QTextEdit里面。直接写就好了。setText方法
#5
仅供参考:
#include <QApplication>
#include <QtGui>
#include <QLabel>
#include <QFile>
int main(int argc,char *argv[])
{
QApplication app(argc,argv);
QFile file("111.txt");
QString aa;
file.open(QIODevice::ReadOnly);
aa=file.readLine();
QLabel *lable=new QLabel(aa);
lable->show();
file.close();
return app.exec();
}
#include <QApplication>
#include <QtGui>
#include <QLabel>
#include <QFile>
int main(int argc,char *argv[])
{
QApplication app(argc,argv);
QFile file("111.txt");
QString aa;
file.open(QIODevice::ReadOnly);
aa=file.readLine();
QLabel *lable=new QLabel(aa);
lable->show();
file.close();
return app.exec();
}
#6
QFile 用这个类实现读数据。。剩下的就是分析和显示了!!
#7
#include <QDebug>
/*****************************************/
QFile fp("123.txt");
QVector<int> array;
if(fp.open(fp.ReadOnly))
{
QTextStream ts(&fp);
while(!ts.atEnd())
{
static int buf;
ts>>buf;
//********************************加上这一行:/
qDebug()<<"数据:"<<buf;
array.append(buf);
}
fp.close();
}
代码这样修改后,运行下,到“应用程序输出”下面看结果
/*****************************************/
QFile fp("123.txt");
QVector<int> array;
if(fp.open(fp.ReadOnly))
{
QTextStream ts(&fp);
while(!ts.atEnd())
{
static int buf;
ts>>buf;
//********************************加上这一行:/
qDebug()<<"数据:"<<buf;
array.append(buf);
}
fp.close();
}
代码这样修改后,运行下,到“应用程序输出”下面看结果
#8
呃,“应用程序输出”里面没有打印我的数据啊,是不是读文本有问题啊~?
里面只有一句话:“D:\qt\workplace\read-build-desktop\debug\read.exe 启动中...”,没有数据呢~~
大神还在吗~?
#9
呃,这样只有一个对话框弹出来呢,label上没有显示数据啊~~
#10
呃,大神能说的更详细点么,我刚学Qt几天,好多基本的语句也不太会写呢~~呵呵
最好是用label显示,因为显示的时候只是给人看的,不需要再修改了~~
#11
有几个问题你注意下:
1、你的“123.txt”放在哪里?是放在你的工程目录下么?就是你放main.cpp的地方。
2、你的"123.txt"里面你写了些什么?如果全是数字 12 1212 这样的还好说。如果你写的有字母什么可能会出错,因为你这里用的QTextSteam而不是QDataSteam,textstream是专门读写文本的。
建议在代码上做这样的修改:
QFile fp("123.txt");
if(fp.open(fp.ReadOnly))
{
QTextStream ts(&fp);
while(!ts.atEnd())
{
QString s;
ts>>s;
//********************************加上这一行:/
qDebug()<<"数据:"<<s;
}
fp.close();
}
然后你再对得到的 QString进行操作得到你想要的值
#12
用QPlainTextEdit,专门用于大数据量的显示。
#13
呃~~谢谢大家了,前几天网络出了问题,一直没有来结贴~~
我后来把“123.txt”放到资源文件里就读出来了,已经搞定了~~谢谢各位大神了~~
我后来把“123.txt”放到资源文件里就读出来了,已经搞定了~~谢谢各位大神了~~
#1
http://qimo601.iteye.com/blog/1470944
Qfile类来实现你的要求,楼主参考上面链接的内容,我想你就明白了,很简单的。
Qfile类来实现你的要求,楼主参考上面链接的内容,我想你就明白了,很简单的。
#2
谢谢哦~~我先看看,不懂了再问~~
#3
class TestReadFile : public QWidget
{
Q_OBJECT
public:
TestReadFile() : QWidget()
{
treeWidget = new QTreeWidget(this);
treeWidget->setColumnCount(2);
QStringList strColumnTitle;
strColumnTitle.append(tr("时间"));
strColumnTitle.append(tr("吞吐量"));
treeWidget->setColumnWidth(0,80);
treeWidget->setColumnWidth(1,50);
treeWidget->setHeaderLabels(strColumnTitle);
treeWidget->setSelectionMode(QAbstractItemView::SingleSelection);
editFileName = new QPlainTextEdit(this);
editFileName->setMaximumWidth(50);
editFileName->setMaximumHeight(30);
btnDoProcess = new QPushButton(this);
btnDoProcess->setText(tr("读取"));
btnDoProcess->setMaximumWidth(50);
QVBoxLayout* layout = new QVBoxLayout(this);
layout->addWidget(editFileName);
layout->addWidget(btnDoProcess);
layout->addWidget(treeWidget);
connect(btnDoProcess,SIGNAL(clicked()),this,SLOT(doProcess()));
setLayout(layout);
}
~TestReadFile() {}
private slots:
void doProcess()
{
QString fileName = QApplication::applicationDirPath() + "\\" + editFileName->toPlainText();
QFile fp(fileName);
QVector<float> valueArray;
if(fp.open(fp.ReadOnly))
{
QTextStream ts(&fp);
QString strLine = "";
QStringList NVPair;
bool bSuccess = false;
float fTime = 0.0f;
while(!ts.atEnd())
{
strLine = ts.readLine();
NVPair = strLine.split(":");
if (NVPair.size() != 2)
continue;
fTime = NVPair[1].toFloat(&bSuccess);
if (bSuccess)
{
QTreeWidgetItem* newItem = new QTreeWidgetItem(treeWidget, NVPair);
valueArray.append(fTime);
}
}
fp.close();
}
}
private:
QTreeWidget *treeWidget;
QPlainTextEdit *editFileName;
QPushButton *btnDoProcess;
};
拿到每一行自己用QString进行解析。
结果保存在valueArray中。
#4
放到一个QTextEdit里面。直接写就好了。setText方法
#5
仅供参考:
#include <QApplication>
#include <QtGui>
#include <QLabel>
#include <QFile>
int main(int argc,char *argv[])
{
QApplication app(argc,argv);
QFile file("111.txt");
QString aa;
file.open(QIODevice::ReadOnly);
aa=file.readLine();
QLabel *lable=new QLabel(aa);
lable->show();
file.close();
return app.exec();
}
#include <QApplication>
#include <QtGui>
#include <QLabel>
#include <QFile>
int main(int argc,char *argv[])
{
QApplication app(argc,argv);
QFile file("111.txt");
QString aa;
file.open(QIODevice::ReadOnly);
aa=file.readLine();
QLabel *lable=new QLabel(aa);
lable->show();
file.close();
return app.exec();
}
#6
QFile 用这个类实现读数据。。剩下的就是分析和显示了!!
#7
#include <QDebug>
/*****************************************/
QFile fp("123.txt");
QVector<int> array;
if(fp.open(fp.ReadOnly))
{
QTextStream ts(&fp);
while(!ts.atEnd())
{
static int buf;
ts>>buf;
//********************************加上这一行:/
qDebug()<<"数据:"<<buf;
array.append(buf);
}
fp.close();
}
代码这样修改后,运行下,到“应用程序输出”下面看结果
/*****************************************/
QFile fp("123.txt");
QVector<int> array;
if(fp.open(fp.ReadOnly))
{
QTextStream ts(&fp);
while(!ts.atEnd())
{
static int buf;
ts>>buf;
//********************************加上这一行:/
qDebug()<<"数据:"<<buf;
array.append(buf);
}
fp.close();
}
代码这样修改后,运行下,到“应用程序输出”下面看结果
#8
呃,“应用程序输出”里面没有打印我的数据啊,是不是读文本有问题啊~?
里面只有一句话:“D:\qt\workplace\read-build-desktop\debug\read.exe 启动中...”,没有数据呢~~
大神还在吗~?
#9
呃,这样只有一个对话框弹出来呢,label上没有显示数据啊~~
#10
呃,大神能说的更详细点么,我刚学Qt几天,好多基本的语句也不太会写呢~~呵呵
最好是用label显示,因为显示的时候只是给人看的,不需要再修改了~~
#11
有几个问题你注意下:
1、你的“123.txt”放在哪里?是放在你的工程目录下么?就是你放main.cpp的地方。
2、你的"123.txt"里面你写了些什么?如果全是数字 12 1212 这样的还好说。如果你写的有字母什么可能会出错,因为你这里用的QTextSteam而不是QDataSteam,textstream是专门读写文本的。
建议在代码上做这样的修改:
QFile fp("123.txt");
if(fp.open(fp.ReadOnly))
{
QTextStream ts(&fp);
while(!ts.atEnd())
{
QString s;
ts>>s;
//********************************加上这一行:/
qDebug()<<"数据:"<<s;
}
fp.close();
}
然后你再对得到的 QString进行操作得到你想要的值
#12
用QPlainTextEdit,专门用于大数据量的显示。
#13
呃~~谢谢大家了,前几天网络出了问题,一直没有来结贴~~
我后来把“123.txt”放到资源文件里就读出来了,已经搞定了~~谢谢各位大神了~~
我后来把“123.txt”放到资源文件里就读出来了,已经搞定了~~谢谢各位大神了~~