Nach "Cancel" verschwinden Werte

Alles rund um die Programmierung mit Qt
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Nach "Cancel" verschwinden Werte

Beitrag von nici »

hallo,

wenn ich auf meiner Gui-Oberfläche auf den Button "load" gehe, mich aber dann doch anders entscheide und "cancel" drücke, dann verschwinden die Werte die in den DoubleSpinBoxes gestanden haben. Wie kann ich es verhindern, dass die Werte verschwinden??

lg

nici
Zuletzt geändert von nici am 11. Dezember 2008 13:52, insgesamt 2-mal geändert.
Hmm mir fällt nichts ein ^^
MBex
Beiträge: 17
Registriert: 24. November 2007 11:36

Beitrag von MBex »

hi

Ohne deinen Quellcode zu sehen, kann dir da denke ich keiner eine Antwort drauf geben.

mfg. MBex
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Drück einfach nicht 'Cancel'.
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

rooofl ;-)

was machst denn bei cancel bzw wie fängst es ab?
schonmal gedebuggt?
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

ich habe keinen debugger, ich benutze geany als entwicklungsumgebung, will mir aber eclipse runter laden.

meine Methode zum öffnen.

Code: Alles auswählen

void TabZwei::open(){
	
	QString fileName = QFileDialog::getOpenFileName(this, "Open File", "/home", ("Datei(*.ini *.txt *.dat *.odt)"));
	qDebug() << "Filename: " << fileName << endl ;
	NSettings n(fileName, this);
	qDebug() << "Status: " << static_cast<int>(n.status()) << endl ;
	qDebug() << "All keys: " << n.allKeys() << endl ; 
    QHashIterator<QString, QDoubleSpinBox *> it(_hash) ;
	while(it.hasNext()) {
		it.next() ;
		qDebug() << "Key \"" << it.key() << "\": insert value "
		<< n.readDouble(it.key()) << endl ;
		it.value()->setValue(n.readDouble(QString::QString(_sectionAberrations).append(it.key()))) ;
	}	
	
	double apertureAngle=n.readDouble(QString::QString(_sectionParameters).append(_idApertureAngle));
	apertureAngleLE->setText(QString::number(apertureAngle));

	double imageScale=n.readDouble(QString::QString(_sectionParameters).append(_idImageScale));
	imageScaleLE->setText(QString::number(imageScale));

	double beamEnergy=n.readDouble(QString::QString(_sectionParameters).append(_idBeamEnergy));
	beamEnergyLE->setText(QString::number(beamEnergy));

}
lg

nici
Hmm mir fällt nichts ein ^^
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Dann lies dir in Ruhe noch mal die Doku zu QFileDialog::getOpenFileName durch. Insbesondere den Teil mit den Rückgabewerten...
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

hmm, da steht "If the user presses Cancel, it returns a null string". Kann man da wirklich nichts, oder kann ich sowas mit "do not clear" abfangen??

lg

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

Beitrag von AuE »

wie wärs mit

Code: Alles auswählen

if (!filename.length()) return;
btw. wenn der user cancel drückt, drückt er cancel. dann bringt es nix einen namen beizubehalten. also einfach die rsestliche fkt skippen.

ich finde es pers. als guten stil wenn man direkt überprüft und bei fehlern(leerer string als übergabepara) die fkt sofort verlässt ohne grosses if else gemehre wo man net mehr durchblickt
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

hi,

danke, es hat geklappt.

lg

nici
Hmm mir fällt nichts ein ^^
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

AuE hat geschrieben:wie wärs mit

Code: Alles auswählen

if (!filename.length()) return;
btw. wenn der user cancel drückt, drückt er cancel. dann bringt es nix einen namen beizubehalten. also einfach die rsestliche fkt skippen.

ich finde es pers. als guten stil wenn man direkt überprüft und bei fehlern(leerer string als übergabepara) die fkt sofort verlässt ohne grosses if else gemehre wo man net mehr durchblickt

Code: Alles auswählen

!filename.isEmpty()
nici hat geschrieben:ich habe keinen debugger, ich benutze geany als entwicklungsumgebung, will mir aber eclipse runter laden.

Code: Alles auswählen

$ ~> ulimit -c unlimited

*nach dem programmabsturz*

$ ~> gdb [programmname] core

(gdb) bt [enter]
oder

Code: Alles auswählen

$ ~> gdb [programmname]
(gdb) b datei.cpp:83
Breakpoint 1 at 0x804bc14: file datei.cpp, line 83.
(gdb) run
n = eine Zeile weiter ausführen
s = in die auszuführende Funktion reinspringen
q = beenden
r = programm starten
b = haltepunkt setzen
d = alle haltepunkte löschen

Ansonsten

Code: Alles auswählen

man gdb
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

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

Beitrag von nici »

ähm ich hab das selbe Problem mit save(). Also wenn ich kein Bild geladen habe, dann aber aus versehen auf save Picture gehe und dann cancel drück, schließt sich die Gui.

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.section('.', -1)!=Dateiendung.section('.',-1))
   {  //Dateiendung an den Namen hängen:
      fileName.append(Dateiendung.section('*',-1));
   }
   imageLabel->pixmap()->save(fileName);
 };
kann ich hier auch sowas wie "if (!filename.length()) return;" machen???

lg

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

Beitrag von nici »

Ok ich hab das Problem gelöst ^^.
Hmm mir fällt nichts ein ^^
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

könntest auch den saveButton deaktiviert lassen so lang kein bild geladen is
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

hmm das ist eine gute Idee, danke.
Hmm mir fällt nichts ein ^^
Antworten