Der Trick mit dem QSlider und noch eine Frage

Alles rund um die Programmierung mit Qt
Antworten
forgoden
Beiträge: 120
Registriert: 10. Februar 2008 17:52

Der Trick mit dem QSlider und noch eine Frage

Beitrag von forgoden »

Hallo, ich bin grad dabei die Tutorials durchzuarbeiten. Bin beim Kapitel 7, so dass mir Fragen auftauchen:

in t7/lcdrange.h steht oben

Code: Alles auswählen

class QSlider;
In der englischen Dokumentation steht da etwas von "trick". Ich kenne diesen Trick nicht und verstehe auch nicht wie das funktioniert. Der Sinn steht im Dokument was von Beschleunigung bei der Komprimierung. Allerdings kann das nicht der alleinige Grund, weil wenn ich das auskommentiere, gibt der Compiler einen Fehler aus. Was wurde da verbunden?



Meine zweite Frage:

In der Klasse sehe ich public, public slots, signals, private

ich kenne in der Klasse nur die Schlüsselwörter public und private. Aber wie funktionieren die zusätzlichen Schlüsselwörter? Ich kenne das in den C++ Regeln nicht. Ich habe erst nur die Grundlagen von C++ durchgearbeitet.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

1. Suche nach 'Vorwärtsdeklaration' (C++ Basics)
2. Qt Grundlagen -> http://doc.trolltech.com/4.4/signalsandslots.html
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
forgoden
Beiträge: 120
Registriert: 10. Februar 2008 17:52

Beitrag von forgoden »

ich meine, wie macht qt diese zusätzlichen schlüsselwörter?

schließlich ist qt nur eine klassenbibliothek?

wie könnte ich selber solche definieren? habe aus dem c++ buch daraus noch nichts gelernt
forgoden
Beiträge: 120
Registriert: 10. Februar 2008 17:52

Beitrag von forgoden »

achso also mit Vorwärtsdeklaration schreibt man dann

class QSlider;

statt #include <QSlider> oder? ist es das gemeint, damit es mit derkompilierung schneller geht?
CLRS530
Beiträge: 155
Registriert: 8. Oktober 2007 18:00

Beitrag von CLRS530 »

forgoden hat geschrieben:ich meine, wie macht qt diese zusätzlichen schlüsselwörter?

schließlich ist qt nur eine klassenbibliothek?

wie könnte ich selber solche definieren? habe aus dem c++ buch daraus noch nichts gelernt
Preprocession ist das Schlüsselwort.
QMake erstellt letztlich dann Standart C++ Klassen ;)
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

Preprocession ist das Schlüsselwort.
Was hat nen Forward mit dem Preprozessor zu tun ?
Forward declarations sind doch nen Sprachmerkmal ... oder ?
statt #include <QSlider> oder? ist es das gemeint, damit es mit derkompilierung schneller geht?
ja fast ^^

Nen forward bietet dir eigentlich nur die möglichkeiten, einen Typen anzulegen, ohne irgend eine Information ueber dentypen mitgeben zu muessen. Es ist dann sowas wie ne Vor - deklaration, ne reservierung des Namens.
DU kannst mit c++ diese vor-declarierten typen aber auch an allen Stellen verwenden an stellen, wo du keine Info ueber den typ selber brauchst. z.b. Zeiger, referenzen (werden eh durch nen pointer dargestellt) und rueckgabewerte im header. Sobald aber auf die Typinformationen zugreifst, brauchst dann den die richtige declaration, klar.

Verwenden tut man dies, um Abhaengigkeiten aufzuloesen !
Das ist wichtiger und maechtiger als wie es aufn ersten blick aussieht.

Das das kompilieren schneller geht, iss eher nen positiver nebeneffekt. Wichtiger dabei ist, das man das Henne / Ei problem bei gegenseitigen referenzieren von Typen/Klassen damit loesen kann.
In der englischen Dokumentation steht da etwas von "trick".
Eigentlich ist das echt schlimm wenn das da so steht !
Der Trick sollte eigentlich die Normalitaet sein !!!
zu deutsch: Man sollte nie einen Header in einen anderen header includen, wenn man nicht eine Instanzierung, oder einen methodenaufruf oder eine typinformation braucht !

Ciao ...
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

Was hat nen Forward mit dem Preprozessor zu tun ?
nichts.. aber die Qt-Keywords "signals" und "slots"...
Das das kompilieren schneller geht, iss eher nen positiver nebeneffekt. Wichtiger dabei ist, das man das Henne / Ei problem bei gegenseitigen referenzieren von Typen/Klassen damit loesen kann.
Das ist zwar Offtopic, aber ich kanns trotzden nicht so stehen lassen... Wichtiger ist, dass sich grosse Projekte sehr viel(!) schneller uebersetzen lassen. Mit Forward-Declarations koennen sich zwar zyklische Abhaengigkeiten loesen lassen, aber das ist schlechtes Design und wird (Signals/Slots sei Dank) in Qt eigentlich auch nie gebraucht.
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

Wichtiger ist, dass sich grosse Projekte sehr viel(!) schneller uebersetzen lassen.
Seh ich auch positiv, aber fuer mich ist wichtiger, das ich Zeiger durch Plugins/Module (von externen entwickelt z.b.) durchreichen kann, ohne Implementationsdetails preiszugeben ....

Ciao ...
Antworten