[Qt 4.3] Slotproblem bei Ableitung von QDialog

Alles rund um die Programmierung mit Qt
Antworten
chrootdev
Beiträge: 70
Registriert: 18. April 2008 17:52

[Qt 4.3] Slotproblem bei Ableitung von QDialog

Beitrag von chrootdev »

Hallo,

ich arbeite mich gerade in Qt ein, und stehe nun vor einem Problem.

Ich erstelle mit Eclipse 3.3 und Qt 4.3 eine Header Datei, und füge folgendes ein:

Code: Alles auswählen

#include <QtGui/QDialog>
#include <QtCore/QObject>
#include <QtGui/QPushButton>

class TestClass : public QDialog {

	Q_OBJECT
	
	public:
		TestClass();
		~TestClass();
		
		void setDialogModal(bool modal);
		bool getDialogModal();
		
	private:
		bool _dialog_modal = false;
		QPushButton* button_ok;
		QPushButton* button_cancel;
		
	private slots:
		void cancel_event();
		
};
Jedoch wird, sobald ich die Zeile "private slots: ..." einfüge, von der Syntaxprüfung ein Fehler angezeigt, so als wenn ich vergessen hätte eine Zeile mit einem semikolon abzuschließen.

Kann es sein das ich einen Fehler bei der Konstelation Q_OBJECT - Slots - Ableitung von QDialog habe?

Danke!
-=Freaky=-
Beiträge: 503
Registriert: 29. Dezember 2006 22:54
Wohnort: HL

Beitrag von -=Freaky=- »

hast du vor dem kompilieren nochmal qmake ausgefuehrt (qmake <deinProFile.pro> -> ohne eckige klammern natuerlich)?
das solltest du immer tun, wenn du qt-spezifische elemente (signals/slots/QOBJECT/...) hinzufuegst.

mfg,
julian
chrootdev
Beiträge: 70
Registriert: 18. April 2008 17:52

Beitrag von chrootdev »

Hi, danke für die Antwort, aber:

Schon das Hinzufügen der Zeile "private slots:" wird als fehler angezeigt, so als hätte ich nach irgendeiner Zeile kein Semikolon gemacht.

Komischweise gehts bei der Klasse, die von Eclipse automatisch erstellt worden ist ganz normal. Diese Klasse wird von QMainWindow abgeleitet, aber daran kann es auch nicht liegen oder?

Wegen "qmake" ich führe es mit "qmake -makefile" und "qmake -project" aus!
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Wird nur ein Fehler angezeigt, oder liefert auch qmake && make einen Fehler?
chrootdev
Beiträge: 70
Registriert: 18. April 2008 17:52

Beitrag von chrootdev »

Mehr oder weniger liefert qmake einen fehler, wenn ich einen slot wie oben beschrieben anlege, und in der Source Satei diesen dann nicht anlegen, meldet qmake einen Fehler bez. referenzen.

Jedoch, wenn ich versuche diesen in der Source Datei anzulegen, wird der slot nicht erkannt. Sogar die ganze Klasse wird in der Codevervollständigung nicht mehr angezeigt.

Klar das ich mich nicht auf die Codevervollständigung verlasse, aber wenn es in der von Eclipse angelegten Source Datei geht, sollte es auch in dieser gehen, darum habe ich noch nicht versucht ob es auch so funktioniert.

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

Beitrag von upsala »

Welchen Fehler?
chrootdev
Beiträge: 70
Registriert: 18. April 2008 17:52

Beitrag von chrootdev »

Also von qmake, egal ob mit -project oder -makefile oder ohne, kommt keiner fehler, wenn ich aber das programm vom terminal weg starte, kommt folgender fehler:
Segmentation fault (core dumped)
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Könnte es sein, daß es uns ans C++-Grundlagen fehlt? Verwende einen Debugger, um diesen Fehler zu finden.
chrootdev
Beiträge: 70
Registriert: 18. April 2008 17:52

Beitrag von chrootdev »

Danke für deine antwort.

Mir fehlen keine grundlagen, ich weiß das das ein zeigerproblem ist. Mir gehts aber eigentlich darum, was an dem codebeispiel im 1. post nicht stimmt oder ob das ein problem von eclipse ist.
ObeliX
Beiträge: 59
Registriert: 14. November 2007 17:47

Beitrag von ObeliX »

das hört sich aber so an, als wenn du garkein qt/signal/slots/qobject-problem hast, sondern einen ganz normalen fehler (zb. pointer-sache). denn offensichtlich wird der code ja ohne (syntax-)fehler kompiliert.
das Eclipse dir irgend nen fehler anzeigt (vermutlich weil es 'slots' nicht kennt und warum das so ist, kann ich dir nicht sagen (ich benutze das nicht).

also doch einfach mal den debugger bemühen.


MfG Obel
Antworten