qt怎么用txt来读取数据和保存数据

主要的效果就是类似于商品的种类 价格 等信息的txt保存,然后可以读取这个txt文件的数据

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7432219
  • 你也可以参考下这篇文章:qt读取txt文件并用表格显示
  • 除此之外, 这篇博客: qt txt快速转excel中的  第一步 获取txt的数据 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •     这个网上比较多,推荐QT 读取txt文件的几种方法

         先获取所有的txt文件的名称:

       QString path1 = QDir::currentPath();
    		QDir dir(path1);
    		QStringList nameFilters;
    		nameFilters << "*.txt" << "*.png";
            //获取名字
    		QStringList files = dir.entryList(nameFilters, QDir::Files | QDir::Readable, QDir::Name);
    		qDebug() << files;

    对每一个txt 读取数据

    for each (QString name in files)
    		{
             //   打开txt文件
    			QString path = path1 + "/" + name;
    			qDebug() << path;
    			QFile f(path);
    			if (!f.open(QIODevice::ReadOnly | QIODevice::Text))
    			{
    				/*	cout << "Open failed." << endl;
    				return -1;*/
    			}
    //读取txt 流
    			QTextStream txtInput(&f);
    
    		/*	QString astr = "";
    			QStringList alldata;*/
    
    			int numK = 0;
    			QList<QVariant> allRowData;
    			while (!txtInput.atEnd())
    			{
    //读取每一行的数据
    				numK++;
    				QString lineStr;
    				QStringList linedata;
    				lineStr = txtInput.readLine();
    			//	astr.append(lineStr);
    //根据空格来分成多个数据
    				linedata = lineStr.split(" ");
    				
    			/*	while (!linedata.isEmpty())
    				{
    					aRowData.append((linedata.front()));
    					linedata.pop_front();
    				}*/
    //将多个数据转为QVariant类型(这个是qt的任意类型)
    				allRowData.append(QVariant(linedata));
    			}

    这样就获取到了txt的所有数据

     


QFile f("D:\\qtManager.txt");
if(!f.open(QIODevice::WriteOnly | QIODevice::Text))
{
    qDebug() << ("打开文件失败");
}
QTextStream txtOutput(&f);
QString str = "123";
txtOutput << str << endl;
f.close();




QFile f("D:\\qtManager.txt");
if(!f.open(QIODevice::ReadOnly | QIODevice::Text))
{
    qDebug() << ("打开文件失败");
}
QTextStream txtInput(&f);                 
QString lineStr;
while(!txtInput.atEnd())
{
    lineStr = txtInput.readLine();
    qDebug() << (lineStr);
}
f.close();