Zeilenweises Einlesen einer txt-Datei in eine QComboBox

Verschiedenes zu Qt
Antworten
timo_81
Beiträge: 20
Registriert: 6. September 2008 10:08

Zeilenweises Einlesen einer txt-Datei in eine QComboBox

Beitrag von timo_81 »

Hallo,

ich möchte eine Datei zeilenweise abarbeiten und die Zeilen in eine ComboBox übernehmen. Es kommt kein Fehler, es wird aber auch nichts eingetragen. Hier ist mein Ansatz:

Code: Alles auswählen


//Datei einlesen

ifstream genopakDaten("C:\Code\mit_genopak.txt");
string zeile;
int i=0;
while(getline(genopakDaten,zeile))//zeilenweise einlesen
 {
QString(zeile);
comboBox_2->insertItem(i,zeile); 
i++;
 } 

Finde jemand den Fehler?
Gruß und vielen Dank -Timo-
MiKla
Beiträge: 134
Registriert: 29. Juli 2007 15:29

Beitrag von MiKla »

Geht es damit?

Code: Alles auswählen

ifstream genopakDaten("C:\\Code\\mit_genopak.txt"); 
timo_81
Beiträge: 20
Registriert: 6. September 2008 10:08

Beitrag von timo_81 »

Hey,
nun kann ich durch die leere ComboBox scrollen...
Vorher konnte ich nicht durch die CombBox scrollen...
an was könnte das liegen?

Danke für die Hilfe bislang!
Gruß und vielen Dank -Timo-
MiKla
Beiträge: 134
Registriert: 29. Juli 2007 15:29

Beitrag von MiKla »

Das hier funktioniert bei mir, vorrausgesetzt die Datei ist vorhanden!

Code: Alles auswählen

	QFile file("c:\\tmp\\test.txt"); 
	QString line;
	if (file.exists()){
		if (!file.open(QFile::ReadOnly | QFile::Text)) {
			QMessageBox::warning(this, tr("Datei oeffnen"),
								 tr("Kann Datei %1: nicht lesen\n%2.")
								 .arg("c:\\tmp\test.txt")
								 .arg(file.errorString()));
		}else{
			QTextStream in(&file);		
			while (!in.atEnd()) {
				line = in.readLine();
				comboBox->addItem(line);
			}
		}
	}
Dateianhänge
Test.zip
Hier ein Testprojekt
(7.46 KiB) 214-mal heruntergeladen
timo_81
Beiträge: 20
Registriert: 6. September 2008 10:08

Beitrag von timo_81 »

Danke schön!!
Hat super geklappt!!
Gruß und vielen Dank -Timo-
timo_81
Beiträge: 20
Registriert: 6. September 2008 10:08

Beitrag von timo_81 »

Nun wollte ich es so erweitern, dass ich mehrere Dateien einlesen kann.
Mein Ansatz war wie folgt:

Code: Alles auswählen


 QFile file("c:\\Code\\adressen.txt");
 QFile file2("c:\\Code\\mit_genopak");
 QFile file3("c:\\Code\\pauschal.txt");
 
 QString line;
 QString line2;
 QString line3;
 
 file.open(QFile::ReadOnly) ; 
 file2.open(QFile::ReadOnly) ; 
 file3.open(QFile::ReadOnly) ; 
  
 QTextStream in(&file);      
    while (!in.atEnd()) {
           line = in.readLine();
           comboBox->addItem(line);
         }
 QTextStream in(&file2);      
    while (!in.atEnd()) 
	     {
           line2 = in.readLine();
           comboBox_2->addItem(line2);
		   comboBox_3->addItem(line3);
          }

	QTextStream in(&file3);      
    while (!in.atEnd()) 
	     {
           line3 = in.readLine();
           comboBox_4->addItem(line3);
		   
         }
         };
  
error C2374: 'in': Neudefinition; Mehrfachinitialisierung
irgendeinen Tipp?
Gruß und vielen Dank -Timo-
MiKla
Beiträge: 134
Registriert: 29. Juli 2007 15:29

Beitrag von MiKla »

dann mach doch:

Code: Alles auswählen

			while (!in.atEnd()) {
				line = in.readLine();
				comboBox->addItem(line);
			}
			QTextStream in2(&file2);     
			while (!in2.atEnd())
				{
				   line2 = in2.readLine();
				   comboBox->addItem(line2);
				 comboBox->addItem(line3);
				  }

			QTextStream in3(&file3);     
			while (!in3.atEnd())
				{
				   line3 = in3.readLine();
				   comboBox->addItem(line3);
		         
				 } 
timo_81
Beiträge: 20
Registriert: 6. September 2008 10:08

Beitrag von timo_81 »

Danke ich dachte in wäre eine Art Schlüsselwort.
Habs kapiert vielen Dank!!
Gruß und vielen Dank -Timo-
Undefined
Beiträge: 34
Registriert: 19. Oktober 2006 17:12

Beitrag von Undefined »

Also noch Umständlicher gehts wohl nicht mehr.
Leute wir sind bei Qt :wink:

Code: Alles auswählen

QComboBox box = new QComboBox;
QFile fp("C:\Code\mit_genopak.txt");
if ( fp.open( QIODevice::ReadOnly ) )
{
  QTextStream stream ( &fp );
  QString data = stream.readAll();
  box->addItems( data.split( QRegExp( "[\\n\\r]+" ) ) );
  fp.close();
}
Und wenn du die Daten prüfen möchtest kannst du das mit einer foreach machen.
Antworten