Seite 1 von 1

[gelöst] Dateifilter auswählen mit getOpenFileName?

Verfasst: 31. Mai 2007 22:30
von qtNiko
hallo,

ich möchte beim Auswählen einer Datei mit getOpenFileName mehrere Filter wählen können. Das Widget dazu bietet eine ComboBox an, aber wie füllte ich diese?

Derzeit behelfe ich mir so:

Code: Alles auswählen

...	
QStringList filters;
filters << "Konfig-, RefMod-Dateien (*.dat)"
	 << "RM-Dateien (*.simu)"
	 << "Bild-Dateien (*.bld *.bmp)"
	 << "Gelaendemodelle (*.flt)"
	 << "Any files (*.*)";
static QString verzStr="...Basisverzeichnis...";
QString fileName = QFileDialog::getOpenFileName(this, captStr, verzStr, filters[filterIndex]);
Der Wert für filterIndex wird vorher entsprechend gesetzt. Dies aber finde ich umständlich.
Ich würde gerne einfach alles, was in filters enthalten ist, in die comboBox laden und dann auswählen können.
Es gibt zwar QFileDialog::setFilters(), aber in getOpenFileName() kann man nur ein QString und kein QStringList übergeben.

Ich hab's auch mit

Code: Alles auswählen

QFileDialog fDialog = new QFileDialog(this);
fDialog->setFilters(filters);  /* filters vom code oben */
QString fileName = fDialog->getOpenFileName(...);
probiert. Das Problem hierbei ist, dass der 5. Parameter "selected_Filter" nach dem Parameter "filter" kommt, d.h. ich komme nicht drum rum, etwas für "filter" anzugeben. Damit ist aber alles in "QStringList filters" wieder hinfällig.
Wenn ich bei Aufruf von getOpenFileName() nur die ersten 3 Parameter angebe, dann wird automatisch "All files (*.*)" vorgegeben.

Das muss doch irgendwie gehen. Wozu ist denn sonst die ComboBox da?

Re: Dateifilter auswählen mit getOpenFileName?

Verfasst: 1. Juni 2007 07:30
von macman
Manchmal hilft einfach ein Versuch :-)
qtNiko hat geschrieben:

Code: Alles auswählen

QString fileName = QFileDialog::getOpenFileName(this, captStr, verzStr, filters.join("\n"));

Verfasst: 2. Juni 2007 12:53
von qtNiko
high,

darauf muss man auch erst mal kommen, danke