Seite 1 von 1

problem mit einem tablewidget

Verfasst: 10. April 2006 18:43
von slash-ex
ich habe folgende funktion gebastelt:

Code: Alles auswählen

void open_data(QString pfad, QString filename, QTableWidget *table)
{
	QFile *new_file = new QFile();

	QDir::setCurrent(pfad);
	new_file->setFileName(filename);

	QTextStream t_str(new_file);
	QStringList *QStrLst = new QStringList();

	if (new_file->open(QIODevice::ReadOnly | QIODevice::Text) )
	{
		while(!t_str.atEnd() )
		{
			QString line = t_str.readLine();
			QStrLst->push_back(line);
		}
	}

	new_file->close();

	QTableWidgetItem *T_item = new QTableWidgetItem();

	for(int i = 0; i < QStrLst->size(); i++) 
	{
		T_item->setText(QStrLst->at(i).section("\t", 2, 2) );
		int row;
			QString str_row = QStrLst->at(i).section("\t", 0, 0);
			row = str_row.toInt();
		int column;
			QString str_column = QStrLst->at(i).section("\t", 1, 1);
			column = str_column.toInt();
		table->setItem(row, column, T_item);
	}
}
wenn iche eine folgende datei einlese

Code: Alles auswählen

0	0	Typ:
0	1	A:
0	2	Ausruestung:
0	3	Punkte:
1	0	HQ:
6	0	Elite:
11	0	Standard:
19	0	Sturm:
24	0	Unterstuetzung:
dann wird in der tablewidget nur das letzte element an entsprechende stellen eingetragen, also an der zeile 0-24 in der spalte von 1-3 immer "unterstützung" anstatt dem richtigem wort wie z.b. "Ausrüstung". obwohl eine ausgabe wie

Code: Alles auswählen

std::cout<<"setze: "<<T_item->text().toStdString()<<" an: "<<row<<" "<<column<<std::endl;
-in der schleife- alles korrekt ausgibt, irgendwie ist da der wurm drin, findet ihr den fehler? schließlich liest er die datei korrekt ein und speichert auch alle zeilen in der stringlist, der fehler kann also nur noch im letztem teil liegen ich find ihn aber nicht :-(

Verfasst: 10. April 2006 19:17
von Tarek
So sollte es funtkionieren:

Code: Alles auswählen

[...]
   new_file->close();

   for(int i = 0; i < QStrLst->size(); i++)
   {
      QTableWidgetItem *T_item = new QTableWidgetItem();
      T_item->setText(QStrLst->at(i).section("\t", 2, 2) );
      int row;
         QString str_row = QStrLst->at(i).section("\t", 0, 0);
         row = str_row.toInt();
      int column;
         QString str_column = QStrLst->at(i).section("\t", 1, 1);
         column = str_column.toInt();
      table->setItem(row, column, T_item);
   }
} 

Verfasst: 10. April 2006 19:41
von slash-ex
dummer fehler, aber im nachinein logisch