Neu in Qt



  • Guten Abend,

    ich bin neu hier und habe schon etwas Erfahrung mit den Grundlagen von C und auch C++. Nun habe ich mich dafür endschieden die GUI-Programmierung in Angriff zu nehmen. Nach langer Recherche habe ich mich für Qt entschieden und würde nun gerne erfahren wie ihr damit angefangen habt, also welche IDE, Buch, Forum etc.

    Danke für eure Zeit
    blue-tec



  • IDE: QtCreator http://qt.nokia.com/

    Das offizielle Qt Buch (1. Auflage) gibts kostenlos:
    http://www.qtrac.eu/C++-GUI-Programming-with-Qt-4-1st-ed.zip

    ist aber auf englisch 😉

    http://qt-forum.de/forum/



  • Dankeschön, ich habe zwar mit englischen Büchern kein Problem aber auf deutsch geht es dann doch schneller. Gibt es dafür noch einen Insidertipp?



  • nimm den Qt Creator und studier die diversen Beispiele, sie sind meist gut in der integrierten Hilfe dokumentiert...



  • Vielleicht bin ich ja schon zu alt, aber ich würde für den Anfang keine Ide verwenden. Notepad++/Kate/... für den Anfang, eben ein simpler Texteditor, nur mit Syntaxhighlighting. Damit lernt man die Library kennen, denn du bekommst keine Hokuspokus-Vervollständigung ala Intellisense, und wirst genötigt öfter in der Doku zu suchen und dabei wichtige Hinweise zu lesen.
    Es gibt keinen "Build" und "Run"-Button, sodass man auchmal eine Console/Command Prompt/... zu Gesicht bekommt (und verwenden muss!).
    Außerdem schadet es nie, ein paar mal selber den Designer zu starten, das .ui im .pro einzutragen, Klassen ohne Wizard erstellen (damit man auch mal mitbekommt, was passiert wenn man das Q_OBJECT vergisst :D), usw. Denn eine IDE kann auch nicht zaubern. Irgendwann gibt es Probleme, dann ist es gut wenn man weiß wie man sich hilft.

    Ein Buch würde ich nicht kaufen, außer es ist umsonst. Die Doku ist umfangreich genug, für viele Sachen gibt es schöne Beispiele (samt Erklärungen). Der einzige Vorteil wäre eine Übersetzung auf Deutsch - aber mal ehrlich, Englisch musst du können, nimm doch dein Vorhaben als Anreiz zum Lernen und verzichte auf das Buch 😉

    Zu guter letzt:

    etwas Erfahrung mit den Grundlagen von C und auch C++

    Das macht mir Angst 😞
    Ich würde dir empfehlen, erst noch ein wenig an den "langweiligen" Grundlagen arbeiten, speziell die von C++. Da gibt es so viel zu entdecken und zu begreifen, ohne dem man mit Qt (auch MIT IDE) nach 5 Minuten das Handtuch wirft. Du tust dir keinen Gefallen damit, jetzt schon mit GUI anzufangen. Die Grundlagen müssen sitzen.



  • Danke für die ausführliche Antwort. Per Hand werde ich sicherlich auch mal ein paar kleine Samples kompilieren aber der Qt-Creator sieht schon ganz nett aus ;-). Ich habe schon per Hand kompiliert und auch mit gdb den einen oder anderen Fehler bei mir gefunden.

    Was für Kenntnisse sind denn deiner Meinung nach erforderlich um mit Qt anzufangen und mal ein oder zwei Buttons ein Label ändern zu können? Const Correctness, RAII, Boost? STL kann ich ein wenig jedenfalls std::vector etc. an RAII versuche ich mich auch zu halten wenn ich meine Klassen entwerfe. Ich teile auch schön immer in Header und Implementierung auf. Ich bin sicherlich nicht perfekt, aber muss man denn sooo viel mehr können um mal die ersten Schritte in Qt gehen zu können?

    Wenn ja was muss ich alles können? Ich könnte dann noch das eine oder andere üben?



  • 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.


  • Mod

    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.


  • Mod

    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.


Anmelden zum Antworten