Nach "Cancel" verschwinden Werte

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

Beitrag von franzf »

Hier mal das png, mit dem bei mir alles klappt (laden, nach tiff konvertieren, tiff auf label anzeigen).
Dateianhänge
test.png
test.png (56.46 KiB) 6755 mal betrachtet
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

ja mein Chef möchte dass man als tiff speichern kann, weil es hautpsächlich schwarz-weiss bilder werden.
Hmm mir fällt nichts ein ^^
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

hab mal ne frage. wie kann ich mir die Endung der Datei anzeigen lassen und überprüfen lassen, ob es in der Auflistung mit dabei ist??
Hmm mir fällt nichts ein ^^
The User
Beiträge: 62
Registriert: 11. Dezember 2008 23:48

Beitrag von The User »

In QString gibt es doch verschiedene RegExp- und Ersetzungsfunktionen.

Code: Alles auswählen

QString endung = dateiname.midRef(dateiname.lastIndexOf('.') + 1);
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

nici hat geschrieben:hab mal ne frage. wie kann ich mir die Endung der Datei anzeigen lassen und überprüfen lassen, ob es in der Auflistung mit dabei ist??
QFileInfo:
- suffix()
- completeSuffix()
- baseName()
- completeBaseName
Einfach Doku fragen.
Und nach dem ermittelten Suffix kannst du dann in deinem filter suchen.
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

@The User
was ist denn "midRef" ?? ehrlich gesagt weiss ich nicht wo ich die Zeile hinschreiben muss. Also in welche Methode, in die savePic(), loadPic() oder in beide?
Hmm mir fällt nichts ein ^^
The User
Beiträge: 62
Registriert: 11. Dezember 2008 23:48

Beitrag von The User »

Also du hast die Dateinamen in dem Filter?
Irgendwie so:

Code: Alles auswählen

QString filter = "Dateien (*.tiff, *.png)";
Ja?
Dann kannst du auch wunderbar suchen:

Code: Alles auswählen

if(filter.contains(QRegExp("\*\." + dateiendung + "[,\)]"))
  // Gefunden
else
  // nicht gefunden
Achso:
midRef ist so ähnlich wie sub_str in den Standard-Strings.
Der zweite Parameter gibt dabei an, wie viele Zeichen aus dem String gelesen werden sollen. Ich habe ihn weggelassen, dann wird bis zum Ende gelesen. Der erste Parameter gibt an, ab wo ausgelesen wird. Es werden also alle Zeichen hinter dem letzten Auftreten von '.' ausgelesen.
Du kannst aber auch die suffix()-Funktion verwenden. ;)
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

also ich hab es mal einfach in die savePic() gemacht.

Code: Alles auswählen

void TabEins::savePic()
 {       
 	//tabWidget->widget(0);
   QFileDialog *tmp = new QFileDialog; 
        
   QString Dateiendung= " *.png";
   
   QString fileName = tmp->getSaveFileName (this, "Speichern", "unbekannt" ," *.png;; *.jgp;; *.jpeg;; *.bmp;; *.tiff;; *.xbm;; *.xpm", &Dateiendung);
   //falls vom Benutzer keine Dateiendung angegeben wird:    
   qWarning() << "TEST" << fileName;
	if(!fileName.isEmpty()){
		if (fileName.section('.', -1)!=Dateiendung.section('.',-1))
		{  //Dateiendung an den Namen hängen:
			fileName.append(Dateiendung.section('*',-1));
			QString endung = fileName.midRef(dateiname.lastIndexOf('.') + 1); 
			qDebug()<< endung;
		}
		imageLabel->pixmap()->toImage().save(fileName);
   }
 };
aber es kommt die Fehlermeldung "'class QString' has no member named 'midRef'
"
ist das so überhaupt richtig (sry dass ich so blöde fragen stelle, aber ich hab grad überhaupt keinen Überblick mehr).
Hmm mir fällt nichts ein ^^
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Äh... verwendest du Qt3 ?!?
Ansonsten gibts noch (in Qt3 und Qt4) QString::mid().
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

ne ich benutze den Qt4, aber ich glaube bei mir ist nicht alles was zu Qt4 gehört installiert. z.B war bei mir auch nicht der assistant installiert.
Hmm mir fällt nichts ein ^^
The User
Beiträge: 62
Registriert: 11. Dezember 2008 23:48

Beitrag von The User »

Hmm, welche Qt-Version hast du denn?
Aber machs doch einfach so:

Code: Alles auswählen

QString endung = QFileInfo(fileName).suffix(); 
Und wenn du nur png erlauben möchstes, kannst du auch gleich so prüfen:

Code: Alles auswählen

if(QFileInfo(fileName).suffix().toLower() == "png")
  // richtige Endung
Viele liebe Grüße
The User
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

ich glaube ihr habt mich miss verstanden. Ich möchte mir nicht einfach nur die Endung ausgeben lassen, sonder ich möchte, dass bevor die Endung wiedergegeben wird, dass Überprüft wird, ob die angegebene Endung mit in der Auflistung ist. Oder verstehe ich euch falsch?
Hmm mir fällt nichts ein ^^
The User
Beiträge: 62
Registriert: 11. Dezember 2008 23:48

Beitrag von The User »

Also Schritt für Schritt:
Welche Auflistung meinst du?
Ich denke einmal:
QString Dateiendung= " *.png";
Was soll überprüft werden?
Ich denke einmal die ausgewählte Datei.

Code: Alles auswählen

if(Dateiendung.contains(QRegExp("\*\." + QFileInfo(fileName).suffix() + "[,\)]")))
{
  // Normale Ausführung
}
else
{
  // falsche Dateiendung
}
Das hatten wir doch schon einmal, oder?
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

ich habe doch dies Zeile zum speichern:

Code: Alles auswählen

   QString fileName = tmp->getSaveFileName (this, "Speichern", "unbekannt" ," *.png;; *.jgp;; *.jpeg;; *.bmp;; *.tiff;; *.xbm;; *.xpm", &Dateiendung);
Da steht jetzt doch png, jpg..., Und bevor ich speichere, möchte ich das überprüft wird, ob die angegebene Endung mit dabei steht.
Das meine. Aber ich versuchs jetzt mal mit deinem Codeschnippsel, danke dir viel mals.

lg

nici
Hmm mir fällt nichts ein ^^
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

ich weiss aber nicht wo ich das hinschreiben soll, sry. bin von der Krankheit etwas benebelt
Hmm mir fällt nichts ein ^^
Antworten