Neu in Qt
-
Du musst definitiv mit Klassen umgehen können. Klassen definieren, ableiten, zerstören, wissen was man mit virtual (an Unfug) treiben kann. templates sollten wenigstens in der Anwendung (QList, usw) sitzen. was machen die ganzen [dynamic,static,...]_cast und wann brauch ich welchen?
Denn sobald du Klassen erweitern willst, muss das sitzen! GUI hat einige zusätzliche Eigenheiten wie event-processing, die auch mit Grundlagenkenntnissen erstmal begriffen werden müssen. Ein Mensch mit Führerschein hat ja auch anfangs in einem Formel1-Wagen Probleme. Stell dir vor, du sollst mit so einem Auto deine ersten "Schritte" machen... Gute Nacht
-
Ok danke für den Überblick. Ich werde mir nochmals alles anschauen, aber auch schon mit Qt anfangen, da ich ja nicht gleich eigene Widgets erstellen möchte sondern es mir erst einmal reicht die Standardcontrols kennen zu lernen. Ich glaube da irgendwie nicht das ich da schon gut generisch programmieren für muss.
Danke nochmal für die professionelle Hilfe.
blue-tec
P.S.: Mal schauen ob ich wirklich nach 5 min schon verzweifle
-
Nur ein Tip am Rande ... das mischen von STL und Qt Klassen ist möglich, du machst es dir aber einfacher wenn du gleich auf die Qt Pendants ausweichst. Sie bieten in der Regel alles was (ich von den STLs/ man) braucht und sind einfacher im Zusammenspiel mit Qt Klassen zu handeln.
std::vector<> --> QVector<>
std::list<> --> QList<>... usw.
Wenn du dann wirklich die std::vector<> irgendwo brauchst, haben die QtPendants in der Regel die Möglichkeit sich selbst in entsprechende STL-Container zu "verwandeln".
Den Vorteil in der QtCreator IDE sehe ich weniger in der AutoVervollständigung (obwohl nett) sondern eher in der Einbindung des Designers direkt in der IDE, der Hilfe per F1 usw ... denn in der Standardinstallation hast du dann alles unter einem Hut, ein QString+F1 ersetzt den Wechsel zu firefox, die Suche in Google/der API.
-
l'abra d'or :
Seh ich genau so.
Mann sollte wenigstens ein mal aufm Hosenboden programmiert haben bevor man sich die ganzen Tools schnappt. Heisst ja nicht, dass man unbedingt ein Riesen-Qt-Projekt mit Notepad machen muss. Alleine zu wissen was so im Hintergrund für Dateien arbeiten und warum bringt schon ne Menge.
Grundlagen C++ sind Pflicht (am besten mit ein wenig Kenntnissen der STL). Templates sind nur bedingt notwendig (man kommt auch ohne Wissen über Templates mit Qt recht weit - und das kann man sich dann aneihgnen wenn man fitter wird - was man mit Qt Programmierung auch wird, da es recht gut strukturiertes C++ ist).
Einfach immer die Doku im Hintergrund geöffnet haben - man findet für fast alles was man machen will gut dokumentierte Beispiele.
Als IDE bevorzuge ich zuhause VisualC++ 2008 Express. Demnächst muss ich mal auf Arbeit Eclipse antesten.
Angefangen hab ichs bei meinem ersten Job: online-doku gelesen und mit 'hello world' losgelegt. Später noch 'n Buch gekauft aber das war nicht sooooo wichtig (war nur gut weil es genauer erklärte wie man Qt unter Linux zum laufen bringt). Vor allem veraltete das, was da drin stand damals doch recht schnell (Stand Qt 3.2 - seit 4.0 hat sich da ein Haufen verändert (und fast alles zum Besseren)).
Die Videoanleitungen auf youtube, etc. sind auch recht witzig: Irgend wo gibt es eines: "Wie mache ich einen simplen, aber funktionsfähigen Internet-Browser mit einem back button in 3 Minuten" oder so
... das ist schon beeindruckend.
-
Danke für die Tipps,
ich finde den Creator auch sehr intuitiv zu bedienen. Ein Beispiel ist Ctrl-S und dann gleich Ctrl-R zum Starten auch das Wechseln zwischen Header und Cpp per F4 und zurück ist einfach herrlich. Und ganz wichtig fand ich das Umschalten von hellen zu dunklem Thema. Da ich mich mit geblendetem Weiß nicht lange konzentrieren kann, weil ich ja nicht auf Papier schaue sondern auf etwas lampenähnlichem was Licht ausstrahlt anstelle es zu absorbieren.
Ich werde deinen Ratschlag beherzigen und gleich bei dynamischen Arrays die Q-Typen anstelle der in der STL nehmen. Die Algorithmen dazu sind die gleichen nehme ich mal an?
Ich habe gerade ein HelloWorld Button erstellt und versuche diesen jetzt auch mal per Hand zu bauen ohne die IDE.
@antialias: Auch dir danke ich für die Anregungen, ich denke so werde ich es auch machen, alles Schritt für Schritt und wenn es mal mit C++ doch hapern sollte einfach nochmal im Stroustrup nachschauen und üben. Ich mache das alles ja auch nicht beruflich, also habe ich alle Zeit der Welt.
-
Die QVector usw. haben iteratoren (const, randowm, ..) die du in <algorythm> reinschmeissen kannst ... einige (andere) sind auch in Qt implementiert http://doc.qt.nokia.com/4.6/qtalgorithms.html
-
Sehr nett, auch die Doku ist erstklassig, besonders da noch schnell immer ein Beispiel mit angeführt wurde.
Das mit dem Kompilieren der Qt-Programme is ja wohl ne Witz oder? Sonst habe ich noch immer Makefiles selbst geschrieben und hier reicht ein qmake -project mit qmake und dann nur noch mit make release/debug und die Dlls reinkopieren, fertig. Einfacher geht es ja kaum.
Danke nochmal für den Tipp auch mal per Hand was zu machen, ich bin begeistert.
-
So wild ist der Einstieg in Qt nicht, es ist ja auch schließlich dafür gemacht einfach angewendet zu werden. Wenn du dich mit den Grundlagen von C++ schon vertraut gemacht hast reicht das völlig.
Es werden halt z.B. für Signal und Slot drei neue Schlüsselwörter eingefügt und du solltest dich mit Klassen und dessen Vererbung gut auskennen aber das sind ja alles Grundlagen genau wie STL die durch Qt ergänzt wird.
Also, wenn du die Grundlagen kannst steht dir der Weg zu Qt offen. Du musst da nicht monatelange Erfahrung mitbringen um ein paar Controls dazu zu bewegen miteinander zu kommunizieren.
Also nen bissle Klassenzeugs und STL und es kann losgehen. Genauso wenig wie C++ ein Hexenwerk ist so ist es auch mit Qt. Es kochen alle nur mit Wasser und wirklich so gut wie Jeder kann das lernen.
G hibbes
-
Ja, hast recht ich bin gerade bei signal und slots Versuchen und es klappt recht gut.
-
Wieso noch zusätzlich STL? Also ich komme immer ohne STL aus, die Container-Klassen, QString usw. in Qt sind doch ok. Ich sehe keinen Sinn noch STL zusätzlich/stattdessen zu verwenden.
Lasse mich aber gerne eines besseren belehren, man kann ja nur dazulernen.
-
Softwaremaker schrieb:
Wieso noch zusätzlich STL? Also ich komme immer ohne STL aus, die Container-Klassen, QString usw. in Qt sind doch ok. Ich sehe keinen Sinn noch STL zusätzlich/stattdessen zu verwenden.
Lasse mich aber gerne eines besseren belehren, man kann ja nur dazulernen.Naja, manchmal möchte man Teile der Software so designen, das sie auch ohne das GUI Frontend läuft.
Ausserdem bietet boost auch viele Dinge, welche evtl. für die Entwicklung sinnvoll sein können.
Auch wenn man die Software auf andere Plattformen portiert, zahlt sich dieser Ansatz aus.
-
Ich meine damit nicht das man die STL zusätzlich nutzen muss, sondern dass es hilft wenn man schon den Umgang mit der STL etwas kennt, da ja die Qt-Pedants sehr ähnlich sind.
Das Beispiel von plhox81 macht natürlich auch Sinn auch wenn ich das nicht meinte.
-
Die STL gehört zu C++ dazu. Wer noch nie mit der STL zu tun hatte, hat noch nicht richtig C++ programmiert und sollte mMn. von GUI-Toolkits noch die Hände lassen. Mag ja sein, dass man mit Qt recht schnell im Designer ein paar Widgets zusammen clicken kann, und ohne viel zu tun hat man ein lauffähiges Programm. Wenns aber mal mehr sein soll, geht das Geschrei los, weil man noch nie was von Ableiten gehört hat, bei der Programmierung gegen ein virtuelles Interface gar nix mehr versteht, und bei Events letztlich voll aussteigt...
Kann sein dass ich daneben liege, aber eben genau solche Leute sieht man oft durch die Foren tingeln, deshalb auch der Rat erstmal ordentlich mit C++ umgehen lernen.
-
l'abra d'or schrieb:
Die STL gehört zu C++ dazu. Wer noch nie mit der STL zu tun hatte, hat noch nicht richtig C++ programmiert und sollte mMn. von GUI-Toolkits noch die Hände lassen. Mag ja sein, dass man mit Qt recht schnell im Designer ein paar Widgets zusammen clicken kann, und ohne viel zu tun hat man ein lauffähiges Programm. Wenns aber mal mehr sein soll, geht das Geschrei los, weil man noch nie was von Ableiten gehört hat, bei der Programmierung gegen ein virtuelles Interface gar nix mehr versteht, und bei Events letztlich voll aussteigt...
Kann sein dass ich daneben liege, aber eben genau solche Leute sieht man oft durch die Foren tingeln, deshalb auch der Rat erstmal ordentlich mit C++ umgehen lernen.yepp, sehe ich auch so.
-
grr..ich spiele jetzt viel mit Widgets und Signal Slots rum und habe noch nicht ein mal den Designer angehabt und ich kann auch nicht gut C++ sondern bin wie gesagt nur mit den Grundlagen vertraut. Ich bin aber trotz der negativen Einstellung hier sehr gut vorangekommen. Kann eure Einstellung nicht ganz verstehen, ich hatte bis jetzt noch keine einzige Frage aber wenn sie kommt kann ich mir schon die Kommentare hier denken.
und noch mal zum mitschreiben. Ich bin C++ Neuling und komme gut mit den Grundlagen von Qt zurecht und habe auch ein paar Programme per Hand kompiliert und nutze keine Designer, da ich zum Lernen nicht das Zusammenklicken einer Anwendung zähle.
-
Das ist nichts gegen dich, sondern eine generelle Feststellung.
Ich habe selber diese Erfahrung auch gemacht, und froh drum, dass ich mich ein halbes Jahr mit den Grundlagen beschäftigt habe.Deine Fragen sind natürlich willkommen.
-
Dann bin ich ja beruhigt
Ich beschäftige mich mit C++ erst seit ca. 4 Monate mal mehr mal weniger, habe aber auch vorher schon in PHP und ein wenig Java programmiert. C war vor Jahren auch mal dabei. Als Buch habe ich mir die C++ Programmiersprache vom C++ Erfinder zugelegt und mag die Hintergundinfos zu C++ darin sehr.An Qt schön finde ich dass hier mal die Vererbung wirklich zum Einsatz kommt. Ich habe sie für meine kleine Sachen kaum gebraucht außer vielleicht mal ne Error-Klassen dessen Funktionalität ich bei vielen anderen Klassen mitgenommen habe.
Danke nochmal dass ihr hier auch für Anfänger da seit.