如何读取txt文本中的数据,并显示出来~~

sanmu111111 2012-07-10 04:25:08
我有一个存储着吞吐量的txt文本,每行有一个数字代表该时刻的吞吐量,我想把txt中的数据读出来,并把最后一个数据显示到label或者lineedit里(我不知道正常显示数据用什么控件好,刚接触Qt几天,只知道这两个可以显示,如果有其他的也可以啊~~~)

例如文件为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();
}


求一个例子程序啊~~
...全文
799 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
sanmu111111 2012-07-13
  • 打赏
  • 举报
回复
呃~~谢谢大家了,前几天网络出了问题,一直没有来结贴~~

我后来把“123.txt”放到资源文件里就读出来了,已经搞定了~~谢谢各位大神了~~
slientman 2012-07-11
  • 打赏
  • 举报
回复
用QPlainTextEdit,专门用于大数据量的显示。
haltwang 2012-07-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

引用 7 楼 的回复:
#include <QDebug>

/*****************************************/
QFile fp("123.txt");
QVector<int> array;
if(fp.open(fp.ReadOnly))
{
QTextStream ts(&amp;fp);
while(!ts.atEnd()……
[/Quote]

有几个问题你注意下:
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进行操作得到你想要的值
sanmu111111 2012-07-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
放到一个QTextEdit里面。直接写就好了。setText方法
[/Quote]

呃,大神能说的更详细点么,我刚学Qt几天,好多基本的语句也不太会写呢~~呵呵

最好是用label显示,因为显示的时候只是给人看的,不需要再修改了~~
sanmu111111 2012-07-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
仅供参考:


#include <QApplication>
#include <QtGui>
#include <QLabel>
#include <QFile>

int main(int argc,char *argv[])
{
QApplication app(argc,argv);

QFile file("111.txt"……
[/Quote]


呃,这样只有一个对话框弹出来呢,label上没有显示数据啊~~
sanmu111111 2012-07-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
#include <QDebug>

/*****************************************/
QFile fp("123.txt");
QVector<int> array;
if(fp.open(fp.ReadOnly))
{
QTextStream ts(&fp);
while(!ts.atEnd())
{
……
[/Quote]


呃,“应用程序输出”里面没有打印我的数据啊,是不是读文本有问题啊~?
里面只有一句话:“D:\qt\workplace\read-build-desktop\debug\read.exe 启动中...”,没有数据呢~~
大神还在吗~?
haltwang 2012-07-10
  • 打赏
  • 举报
回复
#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();
}

代码这样修改后,运行下,到“应用程序输出”下面看结果
shen_wei 2012-07-10
  • 打赏
  • 举报
回复
QFile 用这个类实现读数据。。剩下的就是分析和显示了!!
Anitee 2012-07-10
  • 打赏
  • 举报
回复
仅供参考:


#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();


}
xiebin133 2012-07-10
  • 打赏
  • 举报
回复
放到一个QTextEdit里面。直接写就好了。setText方法
xqan 2012-07-10
  • 打赏
  • 举报
回复

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中。
sanmu111111 2012-07-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
http://qimo601.iteye.com/blog/1470944
Qfile类来实现你的要求,楼主参考上面链接的内容,我想你就明白了,很简单的。
[/Quote]

谢谢哦~~我先看看,不懂了再问~~
刀刀亮 2012-07-10
  • 打赏
  • 举报
回复
http://qimo601.iteye.com/blog/1470944
Qfile类来实现你的要求,楼主参考上面链接的内容,我想你就明白了,很简单的。

16,816

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧