QFileDialog

Alles rund um die Programmierung mit Qt
Antworten
mugi
Beiträge: 30
Registriert: 7. Juli 2011 18:12

QFileDialog

Beitrag von mugi »

Hallo,
ich wollte einen QFileDialog erzeugen, so dass der User einen File auswählt (Der Pfad zu dieser File wird gebraucht)
So weit so gut, was mich aber stört ist dass so bald man einen File auswählt schließt sich der Dialog sofort von selbst. Zwar bekomme ich den Pfad zu den Datei, aber dieses Nebeneffekt will ich los werden.
Es sollten angeblich über die Methode "selectedFiles()" sogar gleichzeitig mehrere Files ausgewählt werden können !!
Den Code den ich verwende sieht so aus:

Code: Alles auswählen

QFileDialog dialog(this);
dialog.setFileMode(QFileDialog::AnyFile);
QStringList fileNames;
 if (dialog.exec())
     fileNames = dialog.selectedFiles();
pfad=fileNames.at(1);
Weiß jemand woran das liegen könnte ?
ScyllaIllciz
Beiträge: 200
Registriert: 9. Juli 2010 19:31

Re: QFileDialog

Beitrag von ScyllaIllciz »

Was soll den Deiner Meinung nach passieren, wenn man eine Datei ausgewählt hat?
Oder was meinst Du mit "Datei ausgewählt"? Nur markiert oder mit Doppelklick geöffnet.
Hast Du schon mal die statische Methode QFileDialog::getOpenFileName(...) probiert?
js
Beiträge: 59
Registriert: 4. Juli 2011 21:29

Re: QFileDialog

Beitrag von js »

Hi das könnte dir vielleicht helfen

Zum auswählen der Datei:

Code: Alles auswählen

QString file;
file= QFileDialog::getOpenFileName(
		this, "Bitte auswählen",
	 "./Ordner","Dokumente (*.txt)" );  }
	if( !file.isNull() ) {
		QString info("Folgende Datei wurde ausgewählt:\n");
		info.append(file);
		QMessageBox::information(
			this, " Ihre Auswahl", info, QMessageBox::Ok );
	}
Die Datei zeilenweise auslesen:

Code: Alles auswählen

 QFile file2(file);
   if (file2.exists()){
      if (!file2.open(QFile::ReadOnly | QFile::Text)) {
         QMessageBox::warning(this, tr("Datei oeffnen"),
                         tr("Kann Datei %1: nicht lesen\n%2.")
                         .arg(file2.errorString()));
	  }else{
         QTextStream in(&file2);      
         while (!in.atEnd()) {

            line = in.readLine();  
			
         }
lg
mugi
Beiträge: 30
Registriert: 7. Juli 2011 18:12

Re: QFileDialog

Beitrag von mugi »

Vielen Dank für eure Hilfe, aber das Problem steht immer noch!
@ScyllaIllciz , das Problem ist, dass das QFileDialog nicht wartet bis man auf "open" gedrückt hat oder mit Doppelklick den File öffnet, sondern schließt sich von selbst sobald der File markiert wurde.
Die statische Methode QFileDialog::getOpenFileName(...) habe ich schon probiert->selber Problem :cry:

@js dein Code hat mich auf Folgende Idee gebracht, aber es ist immer noch nicht was ich wollte!

Code: Alles auswählen

QString pfad;
int ant;
antwort=QMessageBox::No;
while(antwort == QMessageBox::No)
{
   file= QFileDialog::getOpenFileName(this, "Bitte auswählen","./Ordner","Dokumente (*.txt)" );
   if( !pfad.isNull()) 
   {
      QString info("Folgende Datei wurde ausgewählt:\n");info.append(file);
      antwort=QMessageBox::information(this, " Ihre Auswahl", info, QMessageBox::Yes | QMessageBox::No);
   }
}
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Re: QFileDialog

Beitrag von archer »

Kann es sein das dein Windows, wenn du unter Windows arbeitest, eingestellt ist auf "Öffnen durch einfachen Klick"?
Ordneroptionen -> Register Allgemein -> Markieren von Elementen.
Dann ist das das Verhalten das du beschreibst und du somit auch gefordert hast!?
mugi
Beiträge: 30
Registriert: 7. Juli 2011 18:12

Re: QFileDialog

Beitrag von mugi »

yaaaaaaaaa, voll Treffer :D
Danke sehr, Problem gelöst.
ScyllaIllciz
Beiträge: 200
Registriert: 9. Juli 2010 19:31

Re: QFileDialog

Beitrag von ScyllaIllciz »

@archer
Das wäre meine nächste Frage gewesen ;-).
Antworten