problem mit einem tablewidget

Alles rund um die Programmierung mit Qt
Antworten
slash-ex
Beiträge: 239
Registriert: 30. März 2005 21:40

problem mit einem tablewidget

Beitrag 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 :-(
Tarek
Beiträge: 46
Registriert: 3. Oktober 2005 14:29
Kontaktdaten:

Beitrag 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);
   }
} 
slash-ex
Beiträge: 239
Registriert: 30. März 2005 21:40

Beitrag von slash-ex »

dummer fehler, aber im nachinein logisch
Antworten