Gibt es gute Alternativen zur MFC, oder sollte man lieber direkt bei WinAPI bleiben? Sprache: C++



  • Was mir noch einfällt: Beefi muss mit 😉

    Beefi schrieb:

    Ich hab auch schon ein paar mal gelesen, wie sich Leute beschwerten, dass Qt nicht für größere Projekte geeignet sei, da es sehr unübersichtlich und nicht mehr zu warten wird.

    Man stößt durchaus auch bei Qt an die Grenzen des Frameworks, so ist es nicht. Aber z.B. Maya verwendet Qt für die GUI und wieviel umfangreicher kann ein Projekt schon werden?
    Dass es unübersichtlich ist, kann ich nicht bestätigen. Allein durch das in die Sprache mit eingebaute MVC Konzept mit den Modellen für die GUI erzwingt es schon mehr oder weniger einen halbwegs sauberen Stil. Und es ist alles recht gut gekapselt. Kein Vergleich zu Frameworks ala MFC, wobei MFC sogar auch schon sowas wie MVC hatte mit den Document/View Klassen.
    Wartbar ist es auch... Wir haben schon einiges in Qt selber umgebaut/erweitert/angepasst, weil man wie gesagt auch damit an die Grenzen stößt.

    Ich hab diesen Vergleich zwischen Qt und Ultimate++ angeschaut und seh ehrlich gesagt nicht, warum der Code bei Ultimate++ kürzer ist. Was mir auffällt ist, dass der Qt Code verdächtig nach Qt 3 ausschaut. Ich habs mir nicht genau angeschaut, aber ich seh keinen Grund, warum der Qt Code länger sein sollte. Wahrscheinlich ist der Vergleich nicht ganz fair.



  • Wenn man sich den Qt source ansieht, vergehts einem aber auch gewaltig 👎
    Ist das bei allen größeren open source Projekten so? Einfach nur noch schwerstes Gefrickel...



  • Ich weiß nicht, was du hast 😉 Es ist bei allen Open Source Projekten, die ich gesehen habe, wesentlich schlimmer. Qt ist jetzt nicht übertrieben schön oder elegant, aber es ist sauber und konsistent. Alle größeren Open Source Projekte, die ich gesehen habe, sind im Vergleich dazu echt übel.



  • Was mir auffällt ist, dass der Qt Code verdächtig nach Qt 3 ausschaut. Ich habs mir nicht genau angeschaut, aber ich seh keinen Grund, warum der Qt Code länger sein sollte. Wahrscheinlich ist der Vergleich nicht ganz fair.

    Ja das mit Qt3 kann sogar sein...die Beispiele haben auch noch Windows XP Oberfläche. Wobei Windows XP ja noch nicht ganz tot ist 🙂
    Wenn man sich den Vergleich ansieht, haben sie es unten auch nochmal etwas geändert, um es fairer Qt gegenüber zu machen. Aber ich kann damit eh nicht viel anfangen, weil ich Qt ja nicht kenne.

    Was mir jedoch sofort an den Ultimate++ Codebeispielen auffiel, es ist bei weitem nicht so kompliziert wie wxWidgets und GTKmm 🙂 Auf den ersten Eindruck zumindest.

    Es ist bei allen Open Source Projekten, die ich gesehen habe, wesentlich schlimmer.

    Ihr meint jetzt den Sourcecode von Qt selbst?
    Hab ich auch schon oft gehört, dass Open Source Projekte im Code meist fürchterlich aussehen. Auch der Linux Kernel soll der größte Saustall sein 😃
    Aber Qt ist ja noch nicht sooo lange Open Source...das stell ich mir noch recht sauber vor 😉



  • Ich hab nochmal drübergeschaut... Bin immer noch zu faul, mich da wirklich reinzudenken, halte den Vergleich aber immer noch nicht für fair 😉 Was soll z.B. diese riesenlange findEntries Methode in der Qt Version, wo sie auf der anderen Seite nur eine paar Zeilen lange Search Methode haben? Das kann man alles so direkt nicht vergleichen, außerdem würde man das so wahrscheinlich eh nie implementieren. In Qt würde man fürs Suchen am ehesten ein Proxy Model verwenden, dann wärs vielleicht eine Zeile, den Suchbegriff zu setzen. Oder man braucht da noch irgendwelche Optionen (nach was genau man sucht), dann würde man vielleicht vom Proxy Model ableiten und eine Methode überschreiben. Wär etwas Boilerplate, aber sauber und wahrscheinlich immer noch kürzer als das was sie da gemacht haben. Und überhaupt würde man die Suche wohl eher auf dem richtigen Datenmodell machen und nicht auf der GUI Zwischenschicht.



  • Hi,

    der Qt-Code ist von den Qt-Entwicklern höchst persönlich 😃
    Das Beispiel ist auch im QtCreator bereits zum testen enthalten.
    Die Ultimate++ Entwickler haben es dann nur mit Ihrem FrameWork realisiert.
    Wenn man auf der Startseite im Creator oben rechts auf Beispiele klickt, müsste es dabei sein.



  • Mag sein, ist aber nicht die beste Implementierung und veraltet. Ist irgendwie schwer, sowas sinnvoll zu vergleichen.
    Worauf ich hinaus will ist, dass ich generell nicht sehr viel Potenziall sehe, dass bei einem GUI Framework deutlich weniger Code rauskommen würde. Die sind sich doch alle zu ähnlich und viel Boilerplate braucht man bei Qt nicht, von dem her wirst du in der Praxis bei beiden Frameworks ähnlich viel Code brauchen. Und wenn du dein Programm sauber aufbaust, wirst du tendenziell etwas mehr Code brauchen.



  • Guten Abend,
    erstmal großen Dank an den Thread Ersteller ich suche schon seit 1 Woche nach so einem Thread.
    Es ist erstaunlich wie ähnlich sich deine Anschauung und Vorgehensweise mit der meinen decken. Auch dein Beruf und dein Hobby. Irgendwie erschreckend, sind wir alle doch nur in einer MATRIX?
    Wie erwähnt habe ich im Grunde den gleichen Weg auf der GUI lib Suche hingelegt, und bin bei Qt und WxWidgets hängen geblieben. Ich verstehe nicht wie du Probleme beim compilieren der WxWidgets Programme gescheitert bist. Ich habe mir Codilite runtergeladen und einfach drauf los compiliert- ohne irgenwas einzustellen.
    Von Ultimate++ habe ich heute zum ersten mal gelesen und ich bin dir dankbar das du es so ausführlich beschrieben hast. Ich werde es mir gleich anschauen - wxWidgets ist zwar sehr nett aber irgendwie sehne ich mich insgeheim nach etwas schlankerem- etwas Kompakterem, und genau das Scheint mir nach deiner Beschreibung Ultimate++ zu sein. Was mich noch interessieren würde ist, wie gut es mit anderen IDEs ausser der ihren zusammenarbeitet. Du hast nur kurz erwähnt das es auch mit VS funktioniert. Gibt es ein AddIn für VS.
    Aufjedenfall danke für deinen Beitrag- das Internet ist inzwischen so voll von Müll das man nur sehr mühsam an echte und brauchbare infos kommt, vor allem als anfänger.
    Gruß.



  • Hi Ghost++,

    bei wxWidgets hatte ich mit CodeBlocks irgendwie Probleme, dass die IDE/Compiler irgendwie nicht alle Bibliotheken richtig gefunden hat. Ich habe sämtliche Tutorials durchgemacht, aber es gab beim Kompilieren trotzdem immer Fehlermeldungen...obwohl der Vorgang eigentlich sehr simpel ist und nicht anders als bei anderen Bibliotheken. Das war bestimmt nur ein kleiner Fehler, den ich irgendwo übersehen hatte.
    Was wxWidgets betrifft habe ich für mich jedoch folgende Alternative gefunden...
    Unter Windows: Win32++
    Unter Linux: GTKmm
    Win32++ ist absolut easy zu lernen und macht dir ein kleines flottes Programm. Es ist quasi wie direkte Win32API-Programmierung, jedoch wie die MFC gekapselt...Nur eben kostenlos und viel einfacher.
    GTKmm ist die C++-Variante von GTK+ und fast schon Standard auf Linux. Und sehr flott (auch bei leistungsschwachen Geräten). Wenn man auf der Spielwiese Linux mitmischen will, ist das eine gute Wahl, weil vieles mit dem Toolkit geschrieben ist...kannst also Programme für eigenen Zweck umschreiben usw.

    Diese beiden Lösungen sind jetzt eher nur für die GUI (wobei Win32++ noch mehr zu bieten hat, Netzwerk usw.). Klar denken sich viele, dass man das mit Qt auch abdecken kann, aber Qt trifft einfach nicht meinen persönlichen Geschmack. Das sind mehrere Faktoren...diese hunderte von MB die man immer installieren muss, die geringere Performance im Vergleich zu Win32++ oder GTK, MOC, große Bibliotheken, Bibliotheken nicht statisch linkbar, usw.
    Und ich brauche zu den beiden oben genannten Bibliotheken kaum was. Is ja schon fast alles in der Standardlibrary drin...und für ein paar andere Kleinigkeiten kann man ja ne andere Bibliothek suchen, zB Boost für Netzwerk usw. Das ganze kann/darf man dann oft auch noch statisch reinlinken.

    Ja und Ultimate++ ist hier eben (für mich) die eierlegende Wollmichsau. Wenn man sich ansieht, was hier alles im Toolkit enthalten ist, vermisst wohl kaum jemand etwas. Es ist alles absolut frei und auch noch kommerziell nutzbar...und eben statisch linkbar. Ultimate++ ist eigentlich sogar eher zum statisch linken gedacht...man kann aber auch dynamisch linken.
    Und was hier genial ist: Du musst am Code wirklich GAR NICHTS ändern, wenn du das gleiche Programm für Linux und Windows kompilieren willst. Bei wxWidgets ließt man oft von frickeleien...und von Qt auch manchmal. Diese Beispielprogramme, die ich hier im Thread angehängt habe, laufen auf jeder Linux-Kiste. Selbst wenn du nur Xorg installiert hast und sonst nichts. Und es ist auch kein Problem, diese Programme ohne Anpassungen auf meinen Raspberry zu spielen 🙂
    Du hast mich nach anderen IDEs in Zusammenhang mit dieser Bibliothek gefragt...es geht...ich habe es mit CodeBlocks und VS2012 Express probiert. Man hat aber mehr Vorteile, wenn man die IDE von denen verwendet (hier sind echt gute Techniken eingebaut, vor allem in Kombination mit der Library).

    Für mich ist/war CodeBlocks immer die beste IDE. Ich installiere mir Visual Studio nur, wenn ich wirklich abhängig von C#/VB.NET bin. Ein was stört mich nur an CodeBlocks und zwar ist das beim Debuggen der Inhalt der Variablen. Die muss man extra immer mit diesem Watch-Fenster angeben...und wenn man das macht, tauchen manchmal aus heiterem Himmel Programm-Fehler auf (Segmentation Fault) die man nur lösen kann, indem man den Wert der Variablen nicht mehr kontrolliert (absoluter Schwachsinn und nicht Sinn beim Debuggen). Ich hab schon etliche Zeit mit der Suche nach irgendwelchen Code-Fehlern verbracht, wo ich wohl welchen Fehler gemacht hab...obwohl der Fehler nur vom Debuggen entstand.
    TheIDE (IDE von Ultimate++) hat ein neues Debugger-Interface...echt hammer gemacht (gefällt mir besser als bei Visual Studio). Hier kann man zB auch ganz locker mit dem Mauszeiger über ne Variable fahren und der Wert wird angezeigt.
    Die Code-Vervollständigung ist bei TheIDE nur "noch" nicht ganz so toll, wie bei CodeBlocks. Es ist sehr schwer, sich zwischen den beiden zu entscheiden. Beide IDEs sind wirklich verdammt gut. Aber Visual Studio fliegt wieder von meinem PC...ich brauche diese ewigen Softwarepakete nicht alle, nur um ein einfaches C++ Programm zu schreiben. Hatte es nur für schnelle GUI-Programmierung in VB.NET genutzt. Ich will eh immer nen schnellen PC, aber nach Visual Studio Installation, bootet der Rechner dreimal so lange 😃

    Dann kann ich dir noch folgenden Tip geben (da wird es aber auch verschiedene Meinungen geben). Wenn du ab und zu unter Linux programmierst, dann bleib auch bei Windows beim GNU GCC (also MinGW). Ich habe auch erst unter Windows mit VS gearbeitet und unter Linux mit GNU GCC. Die Compiler sind aber unterschiedlich...der eine meckert, wo es der andere nicht macht...und umgekehrt. Man muss sich auf seinen Compiler einfach einleben. Wenn ich die einfachsten Konsolenprogramme unter Visual Studio kompilieren will, steht oft erstmal ne neue Fehlersuche an...obwohl unter MinGW alles bestens war 😃
    Das liegt aber manchmal auch nur an Einstellungen.



  • Ja und Ultimate++ ist hier eben (für mich) die eierlegende Wollmichsau. Wenn man sich ansieht, was hier alles im Toolkit enthalten ist, vermisst wohl kaum jemand etwas.

    Genau das ist das Problem. Ich will beispielsweise keine Threads, da die Standardbibliothek von C++11 das viel besser handhabt.



  • Das kapier ich nicht so ganz. Was meinst du genau?


Anmelden zum Antworten