Nach "Cancel" verschwinden Werte

Alles rund um die Programmierung mit Qt
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Das hat zawr schon lange nix mehr mit dem Topic zu tun (@Mods, abspalten?) und es sind auch Sachen die nix mit Qt zu tun haben...

Aber trotzdem:
Leg dir doch einfach nen String an, in dem der Filter steht:

Code: Alles auswählen

QString filter = " *.png;; *.jgp;; *.jpeg;; *.bmp;; *.tiff;; *.xbm;; *.xpm";
und dann filter dem getSaveFileName mitgeben (der im übrigen static ist und somit ohne QFileDialog-Objekt zu verwenden ist!)
Wenn der fileName dann nicht leer ist nimmst du dir den suffix des Dateinamens und suchst im filter. Wie schonmal geschrieben.
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

hmm, also ehrllich gesagt kenne ich es aber nur mit QFileDialog. Wie soll das denn sonst gehen?
Hmm mir fällt nichts ein ^^
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

nici hat geschrieben:hmm, also ehrllich gesagt kenne ich es aber nur mit QFileDialog. Wie soll das denn sonst gehen?
So wie es in der Doku steht? Und wie man statische Methoden eben aufruft?

Code: Alles auswählen

QString filter = "Images (*.png *.xpm *.jpg)";
QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),
                            "/home/jana/untitled.png",
                            filter);
QString suf = QFileInfo(fileName).suffix();
if( filter.contains( suf ) ) machWas();
else machNix();
Ist jetzt aber eigentlich schon zuviel code...
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

so funktioniert es aber nicht, der speichert erst gar nicht.
Hmm mir fällt nichts ein ^^
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

hab es halt so. aber ich weiss dass das nicht richtig ist.(wegen Dateiendung)

Code: Alles auswählen

QString Dateiendung= " *.png";

 QString filter = "Images (*.png;; *.xpm;; *.jpg;; *.jpeg;; *.bmp;; *.tiff;; *.xbm)";
	QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),"/home/nurc/untitled.png",filter);
	QString suf = QFileInfo(fileName).suffix();
	if(!fileName.isEmpty()){
		
		if( filter.contains( suf ) ){
			fileName.append(Dateiendung.section('*',-1));
		}
		imageLabel->pixmap()->toImage().save(fileName);
	}
Hmm mir fällt nichts ein ^^
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Du lässt dem Nutzer eine Datei auswählen, und wenn die Dateiendung einer im Filter entspricht, überschreibst du den Typ wieder mit png? Echt Absicht?
Und wenn du "Dateiendung" nur brauchst, um das an zu hängen, deklarier es doch als ".png".

Ansonsten setz doch ein paar qDebug()'s, wo du ausgibst, wie die Datei grad heißt, ob suffix() enthalten ist, usw. So kannst du eigentlich selber dein Problem so weit eingrenzen, dass du die Lösung auch selber sehen kannst.
Denn mit der Aussage "speichert ja gar nicht" können wir hier nicht viel raten...
The User
Beiträge: 62
Registriert: 11. Dezember 2008 23:48

Beitrag von The User »

Also zu deinem contains:
1. Du solltest den oben verwendete QRegExp verwenden, sonst wäre zum Beispiel ng eine gültige Dateiendung.
2. png soll doch angehängt werden, wenn die Dateiendung nicht im Filter enthalten ist, also vor den contains-Aufruf ein ! einfügen.
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

Hallo,

das mit png hab ich völlig übersehen, es soll natürlich nicht überschrieben werden, das ist ja schwachsinn was ich da gemacht hab ^^. Wenn ich die RegExpr benutze dann kommt die Meldung " unknown escape sequence".

lg

nici
Hmm mir fällt nichts ein ^^
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

google mal den fehler... oder nimm ein grundlagenbuch und lies dir was zu den strings durch
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

so ich habe es mit dem Filter doch noch hinbekommen, hatte nur in der if Anweisung einen Fehler ^^, danke euch alle.

und bei den escape sequencen musste halt \\ hin.

lg

nici
Hmm mir fällt nichts ein ^^
Antworten