Seite 1 von 1

[Qt 4.3] Slotproblem bei Ableitung von QDialog

Verfasst: 5. Mai 2008 09:44
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!

Verfasst: 5. Mai 2008 15:27
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

Verfasst: 5. Mai 2008 15:33
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!

Verfasst: 5. Mai 2008 16:13
von upsala
Wird nur ein Fehler angezeigt, oder liefert auch qmake && make einen Fehler?

Verfasst: 5. Mai 2008 16:34
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!

Verfasst: 5. Mai 2008 16:50
von upsala
Welchen Fehler?

Verfasst: 5. Mai 2008 19:32
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)

Verfasst: 5. Mai 2008 19:58
von upsala
Könnte es sein, daß es uns ans C++-Grundlagen fehlt? Verwende einen Debugger, um diesen Fehler zu finden.

Verfasst: 6. Mai 2008 09:05
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.

Verfasst: 6. Mai 2008 09:18
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