[gelöst] Problem mit QSpinBox und QComboBox

Alles rund um die Programmierung mit Qt
Antworten
wecka
Beiträge: 8
Registriert: 20. Mai 2005 13:40

[gelöst] Problem mit QSpinBox und QComboBox

Beitrag von wecka »

Hi!


Ich habe ein QMainWindow als Anwendung.
Dort gibt es im Hauptmenü drei Punkte, die auf Dialoge für verschiedene Einstellungen verweisen, welche mit QSettings gespeichert werden.
Dazu hat jeder Dialog einen Slot saveSettings(), welcher mit dem clicked()-Ereignis von dem Speichern-Button verknüpft wird.

Nun habe ich das Phänomen, dass die drei Dialoge sich völlig unterschiedlich verhalten, obwohl auf gleiche Weise implementiert:

1) Dialog 1 -> 2 QLineEdit
Hier funktioniert alles super!

2) Dialog 2 -> 1 QLineEdit, 1 QComboBox, 1 QCheckBox, 2 QDial, 2 QSpinBox
Die QDial sind mit den QSpinBox synchronisiert.
Das Auswerten der Combobox funktioniert (mybox->currentText()).
Wenn ich versuche die QSpinBox auszuwerten (myspinbox->value()), stürzt das Programm ab.

3) Dialog 3 -> 1 QSlider, 1 QSpinBox, 2 QComboBox
Der QSlider ist mit der QSpinBox synchronisiert.
Hier funktioniert auch die SpinBox nicht, ausserdem bekomme ich hier auch einen Absturz beim Auswerten der ComboBoxen (sowohl über currentText() als auch über text(currentItem()).


Ich habe gestern schon sechs Stunden über dem Problem gebrütet, leider weiss ich nun nicht mehr, wo ich ansetzen soll...

Plattform: WinXP Prof.
IDE: MS VC++ 6
QT: 3.2.3
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Hi,

poste mal bitte den Code dazu. Deinen Ausführungen kann ich nur entnehmen, was passiert, aber eben nicht wie es passiert.

Danke.
wecka
Beiträge: 8
Registriert: 20. Mai 2005 13:40

Beitrag von wecka »

Hi!

Danke, ich habe es eben herausgefunden :roll:
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Hi,

du benutzt bestimmt das normale Qt C++, oder? Also nicht Bindings ala Python?

Jede der this -> Anweisungen kannst du rauswerfen, braucht man nicht.

Wieso machst du Settings als Pointer? Das könnte auch schon ein Fehler, bzw. mögliches Speicherleck sein.

deleten bräuchte man in Qt gar nicht, das macht Qt selbstständig, wobei schon des öfteren gesagt wurde sicher ist sicher. Ich tendiere allerdings immer zu nicht löschen, da fehlerhafte deletes schnell Abstürze verursachen und der evtl. mehrspeicher ist auch nur bei riesen Variablen wichtig, oder auf uralt Rechnern. Also eigentlich gar nicht.

Wieso ließt du vor dem Speichern die ganzen Settings? Sollte man nicht die Settings einmal lesen, in Variablen halten und dann bei jedem überschreiben der Konfig auch die Variablen überschreiben, jedoch Global halten?

Zusammenfassung:
Woran es liegt ist schwerer zu sagen, müsste man ausprobieren, was ich allerdings denke ist die Settings als Pointer mit delete sind das Problem.
Die this -> Anweisungen sind zwar unnötig, sollten aber nicht zu einem Absturz führen. Die Settings Klasse funktioniert einwandfrei? Hast du mal den Debugger benutzt, um zu sehen, wo er genau abstürzt?
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Mh, ok, und möchtest du es nicht posten?
wecka
Beiträge: 8
Registriert: 20. Mai 2005 13:40

Beitrag von wecka »

Sorry, ich hatte einfach zu viele Pointer drin.
Die Settings sind übrigens mit Absicht so gelöst (hängt mit der Architektur der gesamten Anwendung zusammen).

Der Fehler war (z.B.) dieser:
QSpinBox meinespinbox* = new...

Jetzt habe ich statt desse
meinespinbox = new...


Trotzdem danke noch mal ;-)
Auch für die anderen Hinweise, ich werde sie zu beherzigen wissen!!!
Antworten