Qt: Mehrere QObject-Klassen in einer Datei

Qt Programmierung, QML, Qt-Plattformen
Antworten
Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Qt: Mehrere QObject-Klassen in einer Datei

Beitrag von fat-lobyte » Di Apr 17, 2012 2:59 pm

Hallo!

Für ein Widget, habe ich eine Klasse, die von QWidget ableitet.
Als "Hilfsklasse" benötige ich für dieses Widget ein weiteres Widget (zumindest glaube ich, dass ich es benötige).

Jetzt gerade habe ich diese Hilfsklasse als eigene .hpp/.cpp-Datei. Da das ding aber zu sonst nichts zu gebrauchen ist als für das Hauptwidget, würde ich gerne einfach die Deklaration und Definition in die Datei des Hauptwidgets klopfen.

Das Hilfswidget ist Qt-Typisch:

Code: Alles auswählen

class ColorDemonstration : public QWidget
{
    Q_OBJECT

public:
    ColorDemonstration(const QColor& color_, QWidget *parent = NULL);
// ...
};
Leider geht das wegen irgendwelcher MOC-Zaubereien nicht:
colorchooser.o: In function `ColorDemonstration':
../egg/colorchooser.cpp:14: undefined reference to `vtable for ColorDemonstration'
../egg/colorchooser.cpp:14: undefined reference to `vtable for ColorDemonstration'
Man beachte, dass alles Funktioniert, sobald ich die Klasse wieder in eigene Dateien ausgliedere.
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Qt: Mehrere QObject-Klassen in einer Datei

Beitrag von Xin » Di Apr 17, 2012 3:25 pm

undefined reference to vtable ?

Vergiss den Destruktor nicht.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: Qt: Mehrere QObject-Klassen in einer Datei

Beitrag von fat-lobyte » Di Apr 17, 2012 3:54 pm

Xin hat geschrieben:undefined reference to vtable ?

Vergiss den Destruktor nicht.
Den Destruktor von Klassen die von QObject abgeleitet sind muss ich selbst nicht implementieren, das macht das "moc"-Tool.
Allerdings eben nur, wenn ich 1 Klasse-1 Header-1 Source- Datei habe. Wenn ich die Deklaration und Definition zum Source der anderen Klasse Packe, gehts eben nicht mehr.
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Qt: Mehrere QObject-Klassen in einer Datei

Beitrag von Xin » Di Apr 17, 2012 4:02 pm

fat-lobyte hat geschrieben:
Xin hat geschrieben:undefined reference to vtable ?

Vergiss den Destruktor nicht.
Den Destruktor von Klassen die von QObject abgeleitet sind muss ich selbst nicht implementieren, das macht das "moc"-Tool.
Allerdings eben nur, wenn ich 1 Klasse-1 Header-1 Source- Datei habe. Wenn ich die Deklaration und Definition zum Source der anderen Klasse Packe, gehts eben nicht mehr.
Also implementiert er den Destruktor für diese Klasse eben nicht.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Qt: Mehrere QObject-Klassen in einer Datei

Beitrag von nufan » Di Apr 17, 2012 5:13 pm

Ich habs grade ausprobiert und es funktioniert ohne Probleme. Oft hilft es qmake neu auszuführen und das Projekt komplett neu zu kompilieren.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Qt: Mehrere QObject-Klassen in einer Datei

Beitrag von Xin » Di Apr 17, 2012 5:16 pm

Siehe Directors-Cut-Edition von undefined reference to vtable. ^^
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: Qt: Mehrere QObject-Klassen in einer Datei

Beitrag von fat-lobyte » Di Apr 17, 2012 5:24 pm

nufan hat geschrieben:Ich habs grade ausprobiert und es funktioniert ohne Probleme. Oft hilft es qmake neu auszuführen und das Projekt komplett neu zu kompilieren.
Danke, ich habs unter Windows nochmal gemacht und es hat funktioniert. Keine Ahnung, warums beim ersten mal nicht hingehaut hat :-/
Haters gonna hate, potatoes gonna potate.

nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Qt: Mehrere QObject-Klassen in einer Datei

Beitrag von nufan » Di Apr 17, 2012 5:29 pm

fat-lobyte hat geschrieben:
nufan hat geschrieben:Ich habs grade ausprobiert und es funktioniert ohne Probleme. Oft hilft es qmake neu auszuführen und das Projekt komplett neu zu kompilieren.
Danke, ich habs unter Windows nochmal gemacht und es hat funktioniert. Keine Ahnung, warums beim ersten mal nicht hingehaut hat :-/
Der MOC spinnt manchmal tatsächlich etwas :/
Deswegen steht auch im Qt-Tutorial:
Sollte der Compiler einmal seltsame Fehlermeldungen ausgeben oder Slots werden nicht ordnungsgemäß aufgerufen, hilft es oft qmake erneut auszuführen und das Programm komplett neu zu kompilieren.

Antworten