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

Verschiedenes zu Qt
Antworten
qtNiko
Beiträge: 216
Registriert: 6. April 2007 21:26
Wohnort: München

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

Beitrag 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?
Zuletzt geändert von qtNiko am 15. Juni 2007 22:42, insgesamt 1-mal geändert.
Gruß von qtNiko

Core i5 760, GT 240, Suse Linux11.3, Eclipse-CDT-Helios, QT4.4, QT-Integration
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Re: Dateifilter auswählen mit getOpenFileName?

Beitrag von macman »

Manchmal hilft einfach ein Versuch :-)
qtNiko hat geschrieben:

Code: Alles auswählen

QString fileName = QFileDialog::getOpenFileName(this, captStr, verzStr, filters.join("\n"));
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
qtNiko
Beiträge: 216
Registriert: 6. April 2007 21:26
Wohnort: München

Beitrag von qtNiko »

high,

darauf muss man auch erst mal kommen, danke
Gruß von qtNiko

Core i5 760, GT 240, Suse Linux11.3, Eclipse-CDT-Helios, QT4.4, QT-Integration
Antworten