Seite 1 von 4
Nach "Cancel" verschwinden Werte
Verfasst: 9. Dezember 2008 15:52
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
Verfasst: 9. Dezember 2008 16:27
von MBex
hi
Ohne deinen Quellcode zu sehen, kann dir da denke ich keiner eine Antwort drauf geben.
mfg. MBex
Verfasst: 9. Dezember 2008 16:58
von upsala
Drück einfach nicht 'Cancel'.
Verfasst: 10. Dezember 2008 07:34
von AuE
rooofl
was machst denn bei cancel bzw wie fängst es ab?
schonmal gedebuggt?
Verfasst: 10. Dezember 2008 12:19
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
Verfasst: 10. Dezember 2008 12:22
von upsala
Dann lies dir in Ruhe noch mal die Doku zu QFileDialog::getOpenFileName durch. Insbesondere den Teil mit den Rückgabewerten...
Verfasst: 10. Dezember 2008 12:28
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
Verfasst: 10. Dezember 2008 12:41
von AuE
wie wärs mit
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
Verfasst: 10. Dezember 2008 13:09
von nici
hi,
danke, es hat geklappt.
lg
nici
Verfasst: 10. Dezember 2008 13:40
von pfid
AuE hat geschrieben:wie wärs mit
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 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
Verfasst: 10. Dezember 2008 13:49
von nici
danke sehr
Verfasst: 11. Dezember 2008 08:37
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
Verfasst: 11. Dezember 2008 08:38
von nici
Ok ich hab das Problem gelöst ^^.
Verfasst: 11. Dezember 2008 09:33
von AuE
könntest auch den saveButton deaktiviert lassen so lang kein bild geladen is
Verfasst: 11. Dezember 2008 09:34
von nici
hmm das ist eine gute Idee, danke.