Ich habe eine Anleitung geschrieben, die Anfängern dabei helfen soll, das Programmieren zu erlernen. http://stefanfrings.de/qt_lernen/index.html Es wird die Programmiersprache C++ und Qt Framework verwendet. Die Rechtschreibkontrolle steht noch auf meiner TODO Liste.
Immerhin zeigst du erfrischenden Humor: "Wie geht es weiter? Wenn du bis hierhin tapfer durchgehalten hast, ohne die Wand an zu schreien oder durch zu drehen, ..." Oliver
Für Anfänger ist das schon hammerhart komprimierter Stoff, oder?
> Für Anfänger ist das schon hammerhart komprimierter Stoff, oder?
Ich fand es ziemlich wirr und durcheinander ohne jeden didaktischen
Wert. Das sieht eher aus wie ein Notizblock fuer dich persoenlich.
Allerdings hab ich es nur ueberflogen und haette es zu unhoeflich
gefunden dir meine Meinung zu sagen ohne das du nachgefragt haettest.
.-)
Qt ist erstmal C++. Also sollte man sich vielleicht einfach ein Buch zu
C++ besorgen. Ich gebe zu das dies aus Sicht von funktional C denkenden
Entwicklern nicht immer ganz einfach ist. Auch ich muss immer kotzen
wenn ich z.B streams sehe und verdrehe bei templates die Augen.
Wenn man dann erstmal ein paar C++ Basics drauf hat dann kann man sich
mit Qt beschaeftigen, also in Prinzip dem Slot Mechanismus und dem
Framework/Qtcreator.
Auch da hilft IMHO eher ein Buch weiter. In meinem Fall war das: "C++
GUI Programming with Qt 4". Koennte aber heute etwas veraltet sein.
Nichts gegen dich, aber ich denke das Thema Qt ist ganz erheblich zu
komplex um das in einer Internetseite abzuhandeln.
Olaf
Ich sag mal vorsichtig, die "Zielgruppe" für diese Art proggen zu lernen sucht seit Jahren eher auf youtube... Oliver
Ach so, Nachtrag: Die nicht unwesentliche Anzahl an Windows-Nutzern wird eh ganz schnell weiterwandern, weil ohne Compiler halt nichts funktioniert, und apt-get install nur zu lustigen Fehlermeldungen führt (und die eh nicht mal wüssten, wo man das denn überhaupt eintippen könnte) Oliver
:
Bearbeitet durch User
Olaf schrieb: > Ich fand es ziemlich wirr und durcheinander Das kann gut sein, ist der erste Entwurf. In der tat habe ich die Reihenfolge während des Schreibens mehrfach geändert weil ich vermeiden wollte, dass der Leser erstmal alle wissen muss, um die Beispiele zu verstehen. Da gibt es sicher noch Verbesserungsbedarf. > Qt ist erstmal C++. Also sollte man sich vielleicht > einfach ein Buch zu C++ besorgen. Die Leute, mit denen ich gesprochen habe fanden C++ Bücher sehr unattraktiv weil sie nicht zeigen, wie man damit grafische Oberflächen baut. Andererseits setzen alle Qt Bücher aber voraus, dass man schon C++ kann. > ich denke das Thema Qt ist ganz erheblich zu > komplex um das in einer Internetseite abzuhandeln. Kann gut sein. Generell ist das Programmieren grafischer Oberflächen für Anfänger zu komplex finde ich. Die wollen aber damit anfangen. Wo landet man dann: Beim App-Inventor oder anderen Baukästen. Mit denen stehe ich auf Kriegsfuß. > Ich sag mal vorsichtig, die "Zielgruppe" für diese Art proggen zu > lernen sucht seit Jahren eher auf youtube... Da muss ich passen, dafür bin ich zu alt. (Ja ich merke, worauf das hinaus läuft. Gut dass ich nicht Lehrer bin.)
Ich hab' die Seite nur kurz überflogen und kann somit zur Umsetzung nichts sagen, finde den Ansatz aber durchaus lobenswert, denn Stefan ⛄ F. schrieb: > Die wollen aber damit anfangen. Das kann man gut oder schlecht finden, aber GUIs sind nunmal seit 20 Jahren das einzige, was ein reiner Anwender kennt. Folglich erwartet er oder sie, daß sein Programm genauso aussieht, selbst wenn es nix anderes macht als in ein kleines Fenster "Hallo Welt" zu schreiben. Stefan ⛄ F. schrieb: > Generell ist das Programmieren grafischer Oberflächen für > Anfänger zu komplex finde ich. Kein Wunder, wenn jeder einzelne Button ein Objekt darstellt...
> Die Leute, mit denen ich gesprochen habe fanden C++ Bücher sehr > unattraktiv weil sie nicht zeigen, wie man damit grafische Oberflächen > baut. Das ist auch nicht ganz falsch. Die meisten Buecher fuer C++ hinterlassen auch bei mir den Eindruck das der Autor vor allem die Intention hatte die Treppe zum Elfenbeinturm schoen sauber zu halten. > Andererseits setzen alle Qt Bücher aber voraus, dass man schon C++ > kann. Naja, man kann es ja unabhaengig lernen. Das Problem ist vielleicht, niemand, also ich nicht, will C++ komplett lernen. Wir, also der etechnische Bodensatz, wollen diverse sinnvolle Grundlagen drauf haben wie sie fuer Mikrocontroller oder einfache Hilfsprogramme auf PCs notwendig sind. Aus der Ecke duerfte IMHO auch das Beduerfnis nach sowas wie qt/python herkommen. > Da muss ich passen, dafür bin ich zu alt. (Ja ich merke, worauf das > hinaus läuft. Gut dass ich nicht Lehrer bin.) Naja, gerade bei einem Klickibunti-Framework kann ein Video hier und da schon sehr hilfreich sein. Wer allerdings glaubt bei sowas wie Qt oder gar C++ ausschliesslich auf Youtube setzen zu koennen wird auch immer unwissend bleiben. Das ist wie in der Uni. Der Type vorne an der Tafel war Youtube-live, aber lernen und Uebungen waren doch notwendig. .-) Olaf
>, und apt-get install nur zu lustigen Fehlermeldungen führt W10 und WSL sei Dank nicht mehr. Offensichtlich kommt für Qt nicht nur C++ zuerst, sonde auch noch W10 ein Stück weit zu beherrschen. Dass nun apt und der ganze Umfang an *buntu Pakete auch auf W10 so gut wie OutOfTheBox verfügbar sind, vereinfacht solche Anleitungen ungemein: die paar apt Befehle zur Voraussetzung gelten für eine viel grössere installierte Basis als nur "native" *buntus. Ein Nachteil f. mich persönlich: das Eis unter mir wird dünner um Gemosere über unzulängliche "Betriebssysteme" abzusondern... > (und die eh nicht mal > wüssten, wo man das denn überhaupt eintippen könnte) Wer Windows WILL, soll sich gefälligst (ein Stück weit + eine Nasenlänge) um das Beherrschen desselben bemühen. Ist schließlich seine eigene Wahl! NB: das Einrichten von WSL per PowerShell erfordert weniger Schritte als sich durch W10-GUI-Dialoge zu klicken.
Plattformübergreifer schrieb: >>, und apt-get install nur zu lustigen Fehlermeldungen führt > W10 und WSL sei Dank nicht mehr. > Offensichtlich kommt für Qt nicht nur C++ zuerst, sonde auch noch W10 > ein Stück weit zu beherrschen. Da würde ich der gerne mal zuschauen, wie du die in der Anleitung für Windows vorgeschlagene Qt-Version "MinGW 64bit" unter WLS zum laufen bekommst. @Stefan Da feht noch der Hinweis auf den zu setzenden Haken unter tools bei MinGW, damit das auch installiert wird. Oliver
... .ObjektorientierungVorIfAnweisungenZuThematisierenFindeIchÄußerstFragwür digmehrhabeichnichtgelesen
Oliver S. schrieb: > Da feht noch der Hinweis auf den zu setzenden Haken unter tools bei > MinGW, damit das auch installiert wird. Der ist automatisch an - es sei denn du hast schon einen kompatiblen Compiler installiert. Ich füge trotzdem ein, kann nicht schaden.
nun ja schrieb: > ObjektorientierungVorIfAnweisungenZuThematisierenFindeIchÄußerstFragwür > digmehrhabeichnichtgelesen Dann guck dir mal an, die die Arduino Tutorial beginnen.
Also ich ziehe den Hut vor jedem, der sich so viel Arbeit macht, um anderen ein Lernen zu ermöglichen. Ich würde dich aber trotzdem bitten, dein Konzept nochmal zu überdenken. Als blutiger Anfänger habe ich etwas installiert (QtCreator, ...), habe wirren Text irgendwohin kopiert und lese sofort im Anschluß etwas von Objekt-Instanzen, Klassen, Parametern, Operatoren, usw. Du versuchst in einem Rutsch C++, Qt und Objektorientierung zu erklären. Zu jedem einzelnen Thema kann man mehrere Bücher schreiben, jedes Thema ist sehr komplex und auch für erfahrene Entwickler anspruchsvoll. Ich glaube, ein Anfänger wird sich da sehr schnell sehr verloren vorkommen. Und da hilft es auch nichts, wenn du jede Menge Links zu Wikipedia setzt, wo die eigentliche Erklärung der Begriffe erfolgt. Das stört den Lesefluß und hindert nur beim Erfassen der Materie. Hast du schon Rückmeldungen erhalten von Leuten, die mit deiner Anleitung Qt lernen wollen? merciless
Dirk K. schrieb: > Hast du schon Rückmeldungen erhalten von Leuten, > die mit deiner Anleitung Qt lernen wollen? Natürlich nicht, die Anleitung ist ja gerade erst veröffentlicht. Ich bin guter Dinge, dass innerhalb der nächsten 5 Jahre was brauchbares raus wird. Wie auch bei den anderen Anleitungen, die ich bisher schrieb.
Mir gefällt dein Ansatz, vom Ziel her zu erklären. Für viele Fälle ist ein genaues Verständnis von "Objekt", "Klasse", "Vererbung", "Typecast", "streams" uvm. nicht nötig. Es gibt Konstrukte, die lernt man und nutzt sie. Mir scheint dein Ansatz wesentlich praxisnäher, als der Hinweis auf drei dicke Bücher zu C, C++ und Qt. Sonst kommt man nie zu einem Programm mit einer GUI. Wenn man ehrlich ist, läuft das Meiste auf Datenschieben zwischen verschiedenen APIs hinaus. Wie die Erklärungen im Detail von einem Einsteiger erfasst werden, kann ich nicht beurteilen, da ich einen Großteil der Begriffe bereits kenne und richtig einordnen kann. Wünsche dir viele Leser von dem Tutorial!
:
Bearbeitet durch User
Elias K. schrieb: > Für viele Fälle ist > ein genaues Verständnis von "Objekt", "Klasse", "Vererbung", "Typecast", > "streams" uvm. nicht nötig. Das hat der Elias jetzt sicher nicht ernstgemeint, oder?
Hab nur die ersten paar Zeilen durchgelesen und kann deshalb keine vollumfassende Bewertung abgeben, aber: Ich finde deine Anleitungen meist immer sehr verständlich und gut geschrieben und dafür, dass du alles kostenlos für jedermann anbietest, würde ich mich hier nie anmaßen dich gleich mit Kritik zu überschütten. Ich finde gut was du da machst und wie viel Arbeit du da investierst. Zur Rechtschreibung: "Englische Texte" schreibt man glaube ich klein und "Ein Beispiel ist zum Beispiel der..." klingt komisch. :)
Elias K. schrieb: > Für viele Fälle ist > ein genaues Verständnis von "Objekt", "Klasse", "Vererbung", "Typecast", > "streams" uvm. nicht nötig. Markus schrieb: > Das hat der Elias jetzt sicher nicht ernstgemeint, oder? Ich glaube schon und ich finde, dass er da gar nicht so falsch liegt.
Timo N. schrieb: > würde ich mich hier nie anmaßen dich gleich mit Kritik zu überschütten. Das ist nett gemeint, aber ich weiß schon was mich hier erwartet :-) Euer Feedback hilft aber schon, den Artikel zu verbessern, deswegen: Nur zu, keine falschen Hemmungen!
Stefan ⛄ F. schrieb: > Das ist nett gemeint, aber ich weiß schon was mich hier erwartet :-) Dachte ich übernehme den anderen Part.. Also den Part, der auch mal lobt und motiviert weiterzumachen. Kritiker gibts hier ja eh genug.
Markus schrieb: > Elias K. schrieb: >> Für viele Fälle ist >> ein genaues Verständnis von "Objekt", "Klasse", "Vererbung", "Typecast", >> "streams" uvm. nicht nötig. > > Das hat der Elias jetzt sicher nicht ernstgemeint, oder? Das habe ich durchaus ernst gemeint. Musst du bei deinem Auto wissen, wie Luft und Treibstoff in den Zylinder eingespritzt werden, um es zu fahren? Erst wenn du dein Auto tunen möchtest, solltest du dich dazu informieren. Davor reicht es meist zu wissen, dass dein Auto mit dem Treibstoff X fährt und du den nachfüllst, wenn die Anzeige unter Y fällt.
:
Bearbeitet durch User
Stefan ⛄ F. schrieb: > ... ich weiß schon was mich hier erwartet :-) Die Leute kennen dich und deinen - sagen wir einmal wohlwollend - peinlichen Stil der Selbstbeweihräucherung.
Elias K. schrieb: > Musst du bei deinem Auto wissen, > wie Luft und Treibstoff in den Zylinder eingespritzt werden, Das reicht doch nur für ganz simple Programme, die eher den Umfang eines Skripts aufweisen. Sobald es etwas ins Eingemachte geht, kommst Du um OOP nicht herum und dafür muß man doch wissen, was es mit Klassen, Objekten, Vererbung usw. auf sich hat? Wo genau endet bzw. beginnt für dich "ein genaues Verständnis"?
Ich finde es für erste Schritte eines Einsteigers in das Thema nicht schlecht, und es macht sicher auch eine Menge Arbeit das so zu erstellen. Dafür vielen Dank. Nach den interessanten Diskussionen neulich hier rund um C++ hatte ich mir vorgenommen in Richtung C++ mal wissensmässig aufzurüsten und kann deshalb nun das Buch 'C++ Das umfassende Handbuch'von Torsten T. Will empfehlen. Sehr verständlich geschrieben und er erklärt an vielen Beispielen nicht nur wie das in C++ gelöst ist sondern warum das so ist, welche Alternativen es gibt usw.
Vielen Dank für euer Feedback. Ich habe einige Verbesserungsvorschläge übernommen.
Vorweg: hab’s nur grob überflogen. Meine Eindrücke dabei: für ’nen absoluten Einsteiger, der weder von C++, noch von dem Konzept der Toolkits eine Idee hat, ist das möglicherweise in der derzeitigen Form nicht sehr hilfreich. Für jemanden, der bereits ein Grundverständnis hat, kann es brauchbar sein. Allerdings wäre eine bessere Gliederung unbedingt anzuraten, denke ich. Abgeschlossene Lerneinheiten mit klarer Aufgabenstellung und Ziel und so, aufgeteilt auf einzelnen Unterseiten. Aber ich find’s toll, dass du dir die Arbeit machst und die Zeit investierst :)
Moin, erst mal Danke für den mutigen Ansatz, so etwas umzusetzten und das dann auch als Köder in dieses Haifischbecken zu schmeissen ;). Ich hab das jetzt für mich als neuen Versuch genommen, um mich erneut mit C++ und QT auseinander zusetzen. Was nett wäre: eine Gliederung bzw. Inhaltsverzeichniss, das auf der linken Seite "statisch" stehen bleibt, während man scrollt. Noch besser: wenn das aktuelle Kapitel dort hervorgehoben wird. Viel Erfolg Grüße M.
Ich wuerde eher einen anderen Ansatz vorschlagen. Die Menschen neigen dazu zuerst Ergebnisse sehen zu wollen und dann etwas erklaert zu bekommen. 1. Erklaeren was genau man installieren muss. 2. Fertiges Projekt zum runterladen liefern das aus einem Quit-Button besteht. 3. Jede Zeile in dem Projekt erklaeren, das slot-Konzept erklaeren. 4. Zeigen wie man mit QT-Creator da ein Lineedit reinzieht. (workflow verstehen) 5. Erklaeren was ein QString ist und wie man die Dokumentation dazu nutzt. 6. Intellektueller einschub: Was ist eine Klasse, Methode, Konstructor, Destructor, was soll private und public. 7. 2-3 weitere Grafikelemente wie z.B das 7Segment Display zeigen und daran nochmal erklaeren wo man es deklariert, wie man die Hilfe nutz und welche Methoden da drin stecken. Also Wissen vertiefen. 8. usw...z.B einen String ueber eine serielle Schnittstelle senden. dazu vielleicht zweites Fenster oeffnen wo man die Baudrate einstellt. Zeigen wie man in Qt Daten systemuebergreifend abspeichert. So kommt man relativ schnell dazu das jemand sich was eigenes basteln kann. Olaf
Ich arbeite gerade an der Gliederung, da ist mir etwas sau-blödes aufgefallen: Was zum Teufel hat die Klasse der Schüler mit der Klasse Schueler zu tun? Verdammte Sch***** Soll ich deswegen jetzt nochmal alles umschreiben? Ich probiere heute Abend mal ein anderes Wording (C++ Klasse versus Schulklasse), vielleicht reicht das schon.
Warum überhaupt diese Mühe mit einem Low-Level-Einstieg? Die Summerfield Bücher sind doch sehr gut.
Wilhelm M. schrieb: > Die Summerfield Bücher sind doch sehr gut. Unter dem Namen finde ich nur Romane. Welche Bücher meinst du?
Stefan ⛄ F. schrieb: > Unter dem Namen finde ich nur Romane. Welche Bücher meinst du? Du schreibst etwas zu Qt und kennst diese Klassiker nicht? Mmh... https://www.amazon.de/Programming-Development-Blanchette-Summerfield-2008-02-14/dp/B00E32BYN8/ref=sr_1_2?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&keywords=qt+summerfield&qid=1583239150&sr=8-2
Wilhelm M. schrieb: > Du schreibst etwas zu Qt und kennst diese Klassiker nicht? Nein, wirklich nicht. Ich hatte im laufe der letzten 15 Jahre drei deutsche Bücher über QT gekauft, war aber am Ende von allen dreien Enttäuscht, weil der Inhalt kaum mehr war, als was man auf der qt.io Seite finden konnte. Ohne Englisch geht es wohl nicht mehr.
Stefan ⛄ F. schrieb: > Ohne Englisch geht es wohl nicht mehr. Das ist allerdings so. Ob allerdings 12 Jahre alte Bücher zu Qt noch sinnvoll sind, sei auch mal dahingestellt. Oliver
:
Bearbeitet durch User
Oliver S. schrieb: > Ob allerdings 12 Jahre alte Bücher zu Qt noch sinnvoll sind, sei auch > mal dahingestellt. Auf dem Niveau der Einführung von Stefanus aber allemal. Denn das Designprinzip von Qt hat sich nicht geändert. Sehr wohl ist QML dazu gekommen, aber diese einfache und coole Technik beschreibt er ja gar nicht. Aber gerade QML wäre wichtig ...
Stefan ⛄ F. schrieb: > Soll ich deswegen jetzt nochmal alles umschreiben? Ja, bitte. Vor allen Dingen solltest Du an dem Inhalt arbeiten!
Wilhelm M. schrieb: > Denn das Designprinzip von Qt hat sich nicht geändert. Den Eindruck habe ich auch. Ich hätte auch keine Hemmungen, ein altes Buch zum Lernen zu verwenden.
> Den Eindruck habe ich auch. Ich hätte auch keine Hemmungen, ein altes > Buch zum Lernen zu verwenden. Naja, von 4 nach 5 haben sich schon ein paar Kleinigkeiten geaendert. Wenn man mit Qt schon umgehen kann oder wenigstens C++ kann ist das sicher kein Problem, wenn aber alles neu ist dann wird man schon hier und da mal leicht Frust schieben. Ich hab z.B noch so dunkel in Erinnerung da sich beim anziehen der Libaries in fuer qmake ein paar Dinge geaendert haben. Olaf
Olaf schrieb: > Ich wuerde eher einen anderen Ansatz vorschlagen. Die Menschen neigen > dazu zuerst Ergebnisse sehen zu wollen und dann etwas erklaert zu > bekommen. > ... > ... Ein meiner Meinung nach sehr guter Ansatz!
Hallo Stefan, deine Anleitung ist OK. Ich habe vor 3 Monaten das Fachbuch 'Einstieg in C++' von Thomas Theis gekauft und mich in die C++Programmierung eingearbeitet. Jede zusätzliche Information finde ich gut. Prima, mach weiter so und bleib aktiv. Gruß Kurt
Kurt P. schrieb: > deine Anleitung ist OK. Mehr aber auch nicht. Ich finde sie didaktisch schlecht und es sind zu viele fachliche Fehler / Fragwürdigkeiten drin.
Wilhelm M. schrieb: > Ich finde sie didaktisch schlecht und es sind zu viele fachliche Fehler > / Fragwürdigkeiten drin. Ich würde mich freuen, wenn du mir bei den fachlichen Fehlern helfen würdest.
Servus Stefan, finde ich gut! Ich bin bisher nur (wenig) hardwarenah in C unterwegs und habe QT auf dem Zettel. Ich denke dies kann ein guter Einstieg für mich sein um mich näher damit zu beschäftigen. Danke + weiter so!
Unabhängig vom Inhalt fällt mir als erstes das für meinen Monitor total unpassende Layout der Webseite auf. Die Gliederung klebt als Balken ziemlich genau in der Mitte des Monitor und wird beim scrollen nicht bewegt. Das lenkt total vom Text der sich links davon versteckt ab während die recht Hälfte des monitors frei bleibt.
Mike R. schrieb: > Die Gliederung klebt als Balken ziemlich genau in der Mitte des Monitor > und wird beim scrollen nicht bewegt. Witzig, vorher wurde kritisiert, dass sie mit scrollt. > während die recht Hälfte des monitors frei bleibt. Ab einer gewissen Breite kann man die Textzeilen nur noch mühsam lesen, deswegen hat die Seite ein Limit. Ich glaube ich mache demnächst wieder ein PDF, dann könnt ihr euren PDF Reader kritisieren.
Stefan ⛄ F. schrieb: > Witzig, vorher wurde kritisiert, dass sie mit scrollt. Ich kritisiere ja auch gar nicht das srcollen. Mein Problem mit der Ansicht ist, dass bei 100% Zoom "dein" Text nur auf der linken Seite dargestellt wird und im Zentrum der Inhaltsverzeichnis "hängt". Das macht ein flüssigen lesen verdammt schwierig. Ich denke es würde auf großen Monitoren besser sein, den Inhalt zu zentrieren (wie hier im Forum auch).
Mike R. schrieb: > Screenshot Wow, du hast aber einen großen Bildschirm! > Mein Problem mit der Ansicht ist, dass bei 100% Zoom "dein" > Text nur auf der linken Seite dargestellt wird und im Zentrum > der Inhaltsverzeichnis "hängt". Wie hättest du es denn lieber? Breitere Textzeilen kommen wohl kaum in Frage und die Gliederung an den rechten Bildschirm-Rand zur schieben ist auch doof. Soll ich die freie Fläche marktüblich mit Werbebanner füllen? > Ich denke es würde auf großen Monitoren besser sein, den > Inhalt zu zentrieren Wenn du deinen Browser nicht maximiert hättest, könntest du es dort hin schieben, wo es Dir am besten gefällt. Nutze die freie Fläche doch, um daneben die Entwicklungsumgebung zu öffnen. Ich habe die Seite absichtlich so gestaltet, dass er platzsparend in schmaleren Fenstern darstellbar ist. Das ist mir ehrlich gesagt wichtiger, als die Vollbild-Darstellung auf extrem großen Bildschirmen. Dann scrollt übrigens auch die Gliederung wieder mit, wie du das haben willst. In Deutschland schreiben wir immer noch linksbündig. Dass immer mehr Webseiten neuerdings zentrieren, halte ich für Blödsinnig. Das ist einer der vielen Mode-Trends, die bald wieder verschwinden. Da kannst du sicher sein.
> Wow, du hast aber einen großen Bildschirm!
Hehe..das sind die Probleme der neuen Zeit mit unseren unterschiedlichen
Displays. :-)
Um mal wieder auf das Thema zurueckzukommen bei Qt habt ihr die Probleme
auch weil die Bildschirme auf dem euer Programm dargestellt wird
unterschiedlich gross sind, manchmal hochkant genutzt werden und ganz
schlimm, stark unterschiedliche DPIs besitzen koennen.
Qt bietet verschiedene Ansaetze das in den Griff zu bekommen, aber nach
meiner Erfahrung klappt das nicht zu 100% wenn sich die DPIs zu sehr
unterscheiden. (vor allem Fontgroessen/Lesbarkeit/Schrift passt noch in
Button oder nicht)
Meine Loesung sieht dann so aus das ich verschiedene ui-Files habe die
ich jeweils anziehe wenn ich einen Source fuer den PC oder fuer mein
Handy uebersetze.
Nicht elegant, aber einfach...
Olaf
Olaf schrieb: > bei Qt habt ihr die Probleme auch Allerdings. Das betrifft jede grafische Oberfläche mehr oder weniger. Einfach alles auf die verfügbare Fläche verteilen ist auch keine Lösung. Ganz geil sind so manche Android Apps auf Fernsehern. Manche haben Buttons mit 20x100px, da kann ich von der Couch aus nicht einmal erkennen, was das ist. Das der default Font mit 32 Pixeln Größe so manche UI Designer überfordert, kommt dann noch dazu. Olaf schrieb: > Meine Loesung sieht dann so aus das ich verschiedene ui-Files habe die > ich jeweils anziehe wenn ich einen Source fuer den PC oder fuer mein > Handy uebersetze. > Nicht elegant, aber einfach... Ich denke, dass es manchmal nicht anders geht, jedenfalls nicht wenn es gut aussehen soll. Skalieren und auseinander ziehen macht nur bedingt Sinn.
Ist angedacht, die Crosscompilierbarkeit in weiteren Kapiteln mit ein zu beziehen? Tatsächlich hatte ich mich damals für ein Android-Smartphone entschieden, pur aus dem Grund, weil ich gesehen hatte, dass der QtCreator out of the box apk files für Android erstellen kann. Wobei das aufsetzten der Toolchain für mich ein Hassle war. In dem Zusammenhang würde es Sinn machen, Beispiele gleich mit den QLayouts zu machen, um auf den verschiedenen Bildschirmen eine sinnvolle Darstellung zu kriegen. Ich persönlich finde sehr sexy, dass man je nach Plattform über USB-Com-Port oder BLE mit z.B. HC-xx eigene Hardware erreichen kann.
Ich verstehe das als Anleitung, um überhaupt prozedural und ggf. OO programmieren zu lernen: Stefan ⛄ F. schrieb: > Ich habe eine Anleitung geschrieben, die Anfängern dabei helfen soll, > das Programmieren zu erlernen. Dabei ist C++ und Qt als Bibliothek nur das Vehikel: Stefan ⛄ F. schrieb: > Es wird die Programmiersprache C++ und Qt Framework verwendet. Meine Meinung dazu habe ich schon gesagt. Und an der Stelle könnte man Qt auch ganz weglassen. Anders wäre es, wenn er es als Einführung in Qt verstehen würde. Nur dann wären eben andere Inhalte wichtig. Auch anders wäre es, wenn man es als Einführung zu C++ verstehen würde. Dann müsste man den Inhalt korrigieren.
Wilhelm M. schrieb: > Stefan ⛄ F. schrieb: >> Es wird die Programmiersprache C++ und Qt Framework verwendet. > > Meine Meinung dazu habe ich schon gesagt. Und an der Stelle könnte man > Qt auch ganz weglassen. > Anders wäre es, wenn er es als Einführung in Qt verstehen würde. Nur > dann wären eben andere Inhalte wichtig. > > Auch anders wäre es, wenn man es als Einführung zu C++ verstehen würde. > Dann müsste man den Inhalt korrigieren. Soweit ich verstanden habe, ist es als Einführung in die Entwicklung graphischer Oberflächen mit C++ gedacht, ohne dass man dafür aber vorher schon C++ ohne graphische Oberfläche gelernt haben muss. Da C++ selbst dafür nichts eingebautes hat, muss man ein Toolkit wählen, mit dem das möglich ist. Qt ist da nicht die schlechteste Wahl.
Stefan ⛄ F. schrieb: > Ich habe eine Anleitung geschrieben, die Anfängern dabei helfen soll, > das Programmieren zu erlernen. Hier steht nichts von GUI ...
> QtCreator out of the box apk files für Android erstellen kann. > Wobei das aufsetzten der Toolchain für mich ein Hassle war. Das war in der Anfangszeit ja auch extrem aeh komplex. Mittlerweile geht es eigentlich. Wenn du irgendwo im Internet einer Anleitung folgst die dir zeigt wie man den Googledreck installiert auf den qt zugreifen muss geht es danach praktisch einfach so.. Olaf
Wilhelm M. schrieb: > Hier steht nichts von GUI ... Aber hier: Stefan ⛄ F. schrieb: > Die Leute, mit denen ich gesprochen habe fanden C++ Bücher sehr > unattraktiv weil sie nicht zeigen, wie man damit grafische Oberflächen > baut. Andererseits setzen alle Qt Bücher aber voraus, dass man schon C++ > kann.
Timo N. schrieb: ... > Ich finde deine Anleitungen meist immer sehr verständlich und gut > geschrieben und dafür, dass du alles kostenlos für jedermann anbietest, > würde ich mich hier nie anmaßen dich gleich mit Kritik zu überschütten. > Ich finde gut was du da machst und wie viel Arbeit du da investierst. > da möchte ich mich anschließen! Stefanus, nimm Dir die Kritiken nicht zu sehr zu Herzen. Manches ist sicher konstruktiv, aber vieles auch nur Wichtigtuerei. Meine - zweifellos subjektive - Meinung zu Deinen Anleitungen auf Deiner website: Du hast ausgesprochenes didaktisches Geschick (ich glaube, das beurteilen zu können, habe über 30 Jahre lang Studis nicht ganz erfolglos unterrichtet). Weiter so!
Jasson J. schrieb: > Android... > Wobei das aufsetzten der Toolchain für mich ein Hassle war. Kann ich bestätigen, war bei mir auch sehr anstrengen. Ist das noch so, dass man unbedingt eine sehr alte Version des NDK nutzen muss? Bei Android musst du so viel anders machen oder zumindest speziell berücksichtigen, dass man dafür ein eigenes Tutorial bräuchte. Ich habe auch starke Bedenken, was die zentrale Installation der Qt Bibliotheken angeht. Ich kann mir nicht vorstellen, dass es noch lange erlaubt sein wird, Bibliotheken aus "fremden" Apps (Ministro) zu laden.
Jasson J. schrieb: > Ich persönlich finde sehr sexy, dass man je nach Plattform über > USB-Com-Port oder BLE mit z.B. HC-xx eigene Hardware erreichen kann. Blutooth Support kam erst vor kurzem dazu. Ich musste damals noch über JNI auf C++ heraus die Java Klassen von Android aufrufen. Das gleiche machen jetzt die Qt Bibliotheken.
Rolf M. schrieb: > Soweit ich verstanden habe ... Genau das ist der Sinn der Anleitung. Wer etwas anderes braucht, soll woanders lesen.
http://stefanfrings.de/dippekuchen/index.html Schmeckt das wirklich mit dem Geräucherten und dazu Apfel- oder Birnenmus?
Md M. schrieb: > http://stefanfrings.de/dippekuchen/index.html > > Schmeckt das wirklich mit dem Geräucherten und dazu Apfel- oder > Birnenmus? Ja, ich finde es total lecker. Dippekuchen sieht allerdings wie Kotze aus - ist nicht jedermanns Sache.
Stefan ⛄ F. schrieb: > Dippekuchen sieht allerdings wie Kotze aus - ist nicht jedermanns Sache. Die meisten geilen Sachen sehen wie Kotze aus.
>> Android... >> Wobei das aufsetzten der Toolchain für mich ein Hassle war. >Kann ich bestätigen, war bei mir auch sehr anstrengen. Ist das noch so, >dass man unbedingt eine sehr alte Version des NDK nutzen muss? Das beruhigt mich schon mal sehr :) Dachte schon ich währe allein. Ansonsten weiß ich nicht, wie es heute ist - hatte das vor ein paar Jahren aufgesetzt und seit es lief die heilige Kuh nicht mehr angefasst. >Blutooth Support kam erst vor kurzem dazu. Ich musste damals noch über >JNI auf C++ heraus Da hab ich ja Glück gehabt, dass es zumindest mit BT inzwischen easy geht. Ich hab das mit JNI mal gemacht, um den Androidplayer für MP3´s zu benutzen und auf einem BananaPi wollte ich auf biegen und brechen ohne GpioLibs direkt aus dem .apk heraus an die Pins kommen. Wobei das auch bei dem Exempel geblieben ist...
> Kann ich bestätigen, war bei mir auch sehr anstrengen. Ist das noch so, > dass man unbedingt eine sehr alte Version des NDK nutzen muss? Hm..ich hab es erst vor zwei Monaten mal neu installiert. Irgendwo in dem Prozess gibt es ein Auswahlfenster wo du dir ein passendes NDK aussuchen kannst. Ich hab mir aber bewusst etwas aelteres ausgesucht. Aber es ist wohl richtig das du harmonierende Versionen von NDK, Java(sehr wichtig!) und Qt brauchst wenn am Ende alles klappen soll. Ich wuerde also nicht empfehlen da unoetig kreativ zu sein, ausser man weiss sehr genau was man will. BTW: Bei mir hat es nach der Installation zuerst nicht funktioniert und die Fehlermeldung war auch nicht so richtig aussagekraeftig. Grund war das man nach der Installation noch einmal irgendein zum NDK gehoerendes Programm aufrufen muss um darin zu bestaetigen das man die Lizenz gut findet. Das war bei meiner letzten Installation noch nicht so. Aber klar. Grundsaetzlich ist das ein gutes Beispiel wieso unsere Welt derzeit in Kacke versinkt. Zuviele Leute verwenden zuviel unterschiedliches Zeug und am Ende besteht die Gefahr das es nur noch auf dem einen Rechner des Entwicklers funktioniert weil es zuviele Variablen gibt. Und nein Container sind nicht die Loesung, die verdecken die Scheisse nur. > Bei Android musst du so viel anders machen oder zumindest speziell > berücksichtigen, dass man dafür ein eigenes Tutorial bräuchte. Nur bei der Installation ist es etwas tricky. Aber dafuer gibt es Anleitungen. https://doc.qt.io/qt-5/android-getting-started.html https://retifrav.github.io/blog/2017/12/28/qt-for-android/ Wenn es einmal installiert ist dann funktioniert es vollkommen problemlos und ohne jeden Unterschied zur PC Entwicklung. Eine Ausnahme sind eventuell Sachen die ganz neu sind. Ich hab vor ein paar Jahren etwas mit BLE gemacht als das noch neu war und da waren noch nicht alle Funktionen fuer jedes Betriebssystem verfuegbar. Und manchmal gibt es auch Bugs die auf das Betriebsystem zurueckgehen. Ich hab vor einigen Jahren mal ein Testprogramm geschrieben das RS485 genutzt hat und das lief unter Windows nicht vernuenftig weil Windows immer zurueckgemeldet hat das der Schreibbuffer bereits leer war obwohl er noch gesendet hat. Das sind aber alles spezielle Sachen die irgendwas mit Hardware machen. Wenn man erstmal nur mit Buttons und Fenstern zaubert wird man keinen Unterschied merken. Olaf
Noch als Anmerkung, meine Erfahrungen beruhen natuerlich auf Linux als Host und auf Qt 5.12.4. Olaf
Olaf schrieb: > Wenn es einmal installiert ist dann funktioniert es vollkommen > problemlos und ohne jeden Unterschied zur PC Entwicklung. Das ist dann schon falsch, denn Android Anwendungen müssen nach einen Neustart da weiter machen, wo sie vorher aufgehört hatten. Zumindest, wenn man sich an die Designvorgaben von Google hält. Google hat auch ganz spezielle Vorstellungen davon, die das Menü bzw die Navigation innerhalb der App aussehen soll. Ich hatte das mal als eigenes Widget implementiert, doch wenige Monate später wollte Google wieder alles ganz anders haben. Das nervt. Aber Apple nervt noch mehr, soweit ich gehört habe.
> Das ist dann schon falsch, denn Android Anwendungen müssen nach einen > Neustart da weiter machen, wo sie vorher aufgehört hatten. Also meine Programme muessen das machen was ich da rein programmiere und das ist auch der Fall. > Zumindest, wenn man sich an die Designvorgaben von Google hält. Willst du mich zum lachen bringen? Weisst du was mich Designvorgaben von Google interessieren? So ein abwertendes Wort wie es hier angebracht waere hab ich gar nicht im Wortschatz. Mein Programme haben sogar einen Quit-Button. Etwas da Google in seinen <auspuck> Designvorgaben vermutlich vergessen hat. Olaf
Olaf schrieb: > Willst du mich zum lachen bringen? Weisst du was mich Designvorgaben von > Google interessieren? Hast du mal versucht, etwas in den Apple Store zu bekommen? > Etwas da Google in seinen <auspuck> > Designvorgaben vermutlich vergessen hat. Nicht vergessen, die haben das sogar begründet. Eine Android App nach deren Gusto wird dann beendet, wenn das OS es für notwendig hält. Und nur dann. Dennoch beende ich auf meinem Smartphone die Apps manuell, weil ich schon öfters verschlafen habe weil irgend eine App über Nacht den Akku leer gesaugt hat und deswegen der Wecker tot war.
> Hast du mal versucht, etwas in den Apple Store zu bekommen?
Ich hab mal was fuer den ][+ unter UCSD-P entwickelt. Ich glaube da
hatten sie noch kein Store.
Olaf
Stefan ⛄ F. schrieb: > Ich habe eine Anleitung geschrieben, die Anfängern dabei helfen soll, > das Programmieren zu erlernen. Ich finde es immer wieder erschreckend, wenn Leute andere in einem Thema unterrichten wollen, von dem sie selbst erwiesenermaßen wenig verstehen. Ein Disclaimer am Anfang wäre angebracht wie z.B. "Ich versuche nun einige Jahrzehnte lang, die Grundlagen von C++ zu lernen. Ich bin dabei nicht weiter gekommen als ein Fachinformatiker in der ersten Woche seiner Ausbildung. Dennoch verspüre ich den Drang, mein lückenhaftes und fehlerbehaftetes Wissen weiterzugeben an diejenigen, die von der Materie noch weniger verstehen als ich."
Konrad S. schrieb: > Ich finde es immer wieder erschreckend, wenn Leute andere in einem Thema > unterrichten wollen, von dem sie selbst erwiesenermaßen wenig verstehen. Das glaube ich dir. Viele Leute, die sich für die absoluten Experten halten, denken so. Die gleichen Leute haben auch mit dem Arduino System Akzeptanzprobleme. Auf der anderen Seite wissen Anfänger am ehesten, welche Informationen Anfänger brauchen. Schicke mal einen 15 Jährigen zu einer C++ Vorlesung in die UNI und frage ihn danach, wie viel er verstanden hat. Wahrscheinlich nichts.
Stefan ⛄ F. schrieb: > Auf der anderen Seite wissen Anfänger am ehesten, welche Informationen > Anfänger brauchen. Du siehst dich also als Anfänger. Sehr gut. Warum schreibst du in deinem Bilderbuch nichts davon?
Konrad S. schrieb: > Warum schreibst du in deinem Bilderbuch nichts davon? Weil ich abschreckende Bemerkungen an dieser Stelle unpassend finde. Im Impressum steht das aber sehr deutlich.
Konrad S. schrieb: > fehlerbehaftetes Wissen weiterzugeben Eine kleine Bitte auch an dich: Mit konkreten Hinweisen die zur Korrektur von Fehlern führen, ist mir und den Lesern mehr geholfen, als mit persönlichen Angriffen. Bitte nenne mir die Fehler, die du gefunden hast.
Stefan ⛄ F. schrieb: > Bitte nenne mir die Fehler, die du gefunden hast. Das habe ich bereits getan. Der Fehler ist, dass jemand wie du anderen vorgaukelt, ihnen Programmieren beibringen zu können.
> Das habe ich bereits getan. Der Fehler ist, dass jemand wie du anderen
vorgaukelt, ihnen Programmieren beibringen zu können.
Also inhaltlich nix zu kritisieren, sondern einfach mal stänkern ...
solche Leute wie dich brauchts im Forum wirklich nicht.
@Stefanus : Find ich gut was du machst mit der Anleitung.
Mike R. könntest du bitte nochmal das aktuelle Layout prüfen, ob es auf deinem großen Bildschirm jetzt akzeptabel aussieht?
Nur mal so als Anmerkung: der linke Teil ist nerviger Ballast. Bei einer derart langen Seite stört der ungenutze Platz links der nur oben mit etwas Leben gefüllt ist das derjenige nicht braucht der diese Seite an sich nutzen will.
NichtWichtig schrieb: > Nur mal so als Anmerkung: der linke Teil ist nerviger Ballast. > Bei einer derart langen Seite stört der ungenutze Platz links der nur > oben mit etwas Leben gefüllt ist das derjenige nicht braucht der diese > Seite an sich nutzen will. Andererseits halte ich nichts davon, die volle Bildschirmbreite für Text zu nutzen, weil die Zeilen dann arg lang werden. Zumindest ich habe dann Schwierigkeiten beim Lesen.
Das könntest du ja den Leser entscheiden lassen. Du schreibst doch eh schon, dass er einfach das Browserfenster schmaler machen soll, wenn die Ränder stören. Das kann er ja auch, wenn ihn lange Zeilen stören, nur hat er dann selber die Wahl, ob er das will oder nicht.
Rolf M. schrieb: > Das könntest du ja den Leser entscheiden lassen. Du schreibst doch > eh > schon, dass er einfach das Browserfenster schmaler machen soll, wenn die > Ränder stören. Das kann er ja auch, wenn ihn lange Zeilen stören, nur > hat er dann selber die Wahl, ob er das will oder nicht. Ja, bis zu einem gewissen Maximum, das ich festlege. Ich hatte es früher mal ohne limitierte Breite, da bekam ich eine Menge negatives Feedback sogar per Email. Bei kleinen Bildschirmen (Smartphones, Tablets) wird die links Navigation ausgeblendet, um angemessenen Platz für Text zu schaffen.
Stefan ⛄ F. schrieb: > > Andererseits halte ich nichts davon, die volle Bildschirmbreite für Text > zu nutzen, weil die Zeilen dann arg lang werden. Zumindest ich habe dann > Schwierigkeiten beim Lesen. Es ist schon seit Jahren möglich nur ein Teilbereich des Fensters zu nutzen. Daneben läuft dann gleich QtCreator und die App selbst, gerade im Zeitalter von UHD echt cool. Die Zeit von 1024x768 ist schon lange vorbei und selbst FullHD gehört auf's Abstellgleis.
NichtWichtig schrieb: > Es ist schon seit Jahren möglich nur ein Teilbereich des Fensters zu > nutzen. Außer auf dem Smart-TV, aber das ist eine andere Baustelle die mir in diesem Fall Sch*** egal ist.
Warum sind Fernseher egal, Handys aber nicht? Ich halte beide für so ein Tutorial für gleichermaßen ungeeignet. NichtWichtig schrieb: > und selbst FullHD gehört auf's Abstellgleis. Mag sein, aber es ist immer noch sehr verbreitet. Stefan ⛄ F. schrieb: > In Deutschland schreiben wir immer noch linksbündig. Dass immer mehr > Webseiten neuerdings zentrieren, halte ich für Blödsinnig. Das ist einer > der vielen Mode-Trends, die bald wieder verschwinden. Da kannst du > sicher sein. In einem Buch klebt der Textblock auch nicht am linken Blattrand, sondern ist zentriert. Und das schon seit vielen Jahrhunderten. Stefan ⛄ F. schrieb: > Ich hatte es früher mal ohne limitierte Breite, da bekam ich eine Menge > negatives Feedback sogar per Email. Erstaunlich. Die Leute wollen also ihre Webseiten in großen Browserfenstern anschauen, die zur Hälfte leer sind. Hätt ich nicht gedacht.
Rolf M. schrieb: > Warum sind Fernseher egal, Handys aber nicht? Ich halte beide für so ein > Tutorial für gleichermaßen ungeeignet. Wwenn ich am Rechner arbeite und mein Bildschirm nicht groß genug ist, die Anleitung neben Qt Creator anzuzeigen, weiche ich eventuell auf ein Smartphone oder Tablet aus.
Rolf M. schrieb: > In einem Buch klebt der Textblock auch nicht am linken Blattrand, > sondern ist zentriert. Das ist wohl wahr. Andererseits frage dich mal, warm Web Browser per Default immer alles linksbündig anzeigen. Die Mode ändert sich von Zeit zu Zeit. > Erstaunlich. Die Leute wollen also ihre Webseiten in großen > Browserfenstern anschauen, die zur Hälfte leer sind. Hätt > ich nicht gedacht. Ja. Wo andere jeden Millimeter mit Werbung zupflastern kann so eine leere Fläche sehr beruhigend wirken. Die schicken Wohnungen der reichen Leute im Fernsehen haben auch viel mehr leere Flächen, als gewöhnlich.
Cool dass du dir die Mühe machst. Beim drüberscrollen fallen mir ein paar Dinge auf: - Das "name = name"-Problem in Konstruktor vermeidet fast jeder Entwickler, indem er den Membern ein Präfix gibt, meist m oder m_. Die this-> Lösung sieht man eher selten. - Ebenso setzt fast jeder Entwickler vor und nach "=" ein Leerzeichen. Du machst das ... manchmal. - Klar ist, dass man vieles weglassen muss. Ich finde aber teilweise die Auswahl der Komplexität merkwürdig. So lässt du zum Beispiel das extrem gängige "const& für Parameter"-Konstrukt weg. Ok. Dafür erklärst du aber das wirre Konstrukt, wie man in der Windows-Konsole die Zeichenkodierung ändert? Ich weiß nicht ob das ein kluger Tradeoff ist. - LD_LIBRARY_PATH ist Murks, und das schon eigentlich immer. Das ist was für Endbenutzer, die irgendwas workarounden wollen. Für Development-Setups auf Linux sollte man das Buildsystem eher so bauen, dass es RPATH/RUNPATH richtig setzt. - Wie quasi in allen Tutorials finde ich Text I/O stark überbetont -- sehr wenige Menschen schreiben Konsolenanwendungen, und zu Diagnosezwecken ist qDebug() einem QTextStream(stdout) stark überlegen. In den letzten 30.000 Zeilen C++ die ich geschrieben habe, habe ich das nie benutzt. - Der Ternary-Operator wird vor dem if/else eingeführt, wirklich? :D Lass ihn einfach weg. - Genauso würde ich die Bitweise-Operatoren weglassen. Das ist super spezielles Zeug, den man bei normaler Software so gut wie nie benötigt. - "obwohl das nicht zwingend notwendig ist, weil das Betriebssystem schon automatisch aufräumt, wenn das Programm endet" doch, das ist unbedingt notwendig, weil du nicht weißt welche anderen Resourcen abhängige Objekte noch allokiert haben, die das Betriebssystem nicht automatisch aufräumen kann. Typisches Beispiel wäre QTemporaryFile. Bitte den Anfängern nicht gleich solchen Pfusch beibringen. Das in modernem C++ extrem wichtige Thema der automatischen Speicherverwaltung sprichst du gar nicht an -- ich würde mir entweder den new/delete-Teil ganz sparen, oder zumindest noch std::shared_ptr erklären. - Dein Teil über Zufallszahlen benutzt die C-Standardbibliothek statt der von C++. Auch INT_MAX kommt aus der C-Welt, in C++ gibt es den std::numeric_limits-Kram.
Sven B. schrieb: > - Das "name = name"-Problem in Konstruktor vermeidet fast jeder > Entwickler, indem er den Membern ein Präfix gibt, meist m oder m_. Die > this-> Lösung sieht man eher selten. Das Grundproblem ist, dass er ja weder den Unterschied zwischen Deklaration und Definition noch den Unterschied zwischen Zuweisung und Initialisierung verstanden hat. Das Tutorial ist mehr ein Notizzettel für ihn persönlich, was er noch lernen muss. Die Stelle, die Du wohl ansprichst, ist einfach nur falsch. Die richtige Lösung wäre eine Element-Initialisierungsliste / Element-Initialisierer und / oder in-class-Initialisierung.
Stefan ⛄ F. schrieb: > Rolf M. schrieb: >> Warum sind Fernseher egal, Handys aber nicht? Ich halte beide für so ein >> Tutorial für gleichermaßen ungeeignet. > > Wwenn ich am Rechner arbeite und mein Bildschirm nicht groß genug ist, > die Anleitung neben Qt Creator anzuzeigen, weiche ich eventuell auf ein > Smartphone oder Tablet aus. Halte ich für eher unpraktisch. Wenn ich von der Seite irgendwelchen Code rauspasten oder abspeichern will, ist das umständlich, und man muss es dann erstmal noch irgendwie vom Handy auf den Rechner übertragen. Oder halt alles abtippen. Aber ok, ich bin ja immer wieder überrascht, was Menschen so alles für sinnvoll halten - wie eben halb leere Browserfenster. Stefan ⛄ F. schrieb: > Rolf M. schrieb: >> In einem Buch klebt der Textblock auch nicht am linken Blattrand, >> sondern ist zentriert. > > Das ist wohl wahr. Andererseits frage dich mal, warm Web Browser per > Default immer alles linksbündig anzeigen. Weil der, der das ursprünglich mal festgelegt hat, nicht so genau drüber nachgedacht hat? > Die Mode ändert sich von Zeit zu Zeit. Ich sitze nicht vor dem linken Rand des Bildschirms, sondern mittig. >> Erstaunlich. Die Leute wollen also ihre Webseiten in großen >> Browserfenstern anschauen, die zur Hälfte leer sind. Hätt >> ich nicht gedacht. > > Ja. Wo andere jeden Millimeter mit Werbung zupflastern kann so eine > leere Fläche sehr beruhigend wirken. Die schicken Wohnungen der reichen > Leute im Fernsehen haben auch viel mehr leere Flächen, als gewöhnlich. Über Platzverschwendung, gerade bei User-Interfaces rege ich mich öfters auf. Zum Beispiel, wenn das Radio in meinem Auto ein Viertel der Displayfläche dafür verschwendet, um ein Icon eines USB-Sticks anzuzeigen, damit ich weiß, dass jetzt von USB abgespielt wird, dafür aber dann 50% aller Musiktitel unvollständig angezeigt werden (mit "…" am Schluss), weil der Platz dafür zu klein ist. Das ist besonders ärgerlich, wenn der Anfang des Titels immer gleich ist und nur der Teil hinter dem "…" sich unterscheidet.
:
Bearbeitet durch User
Sven B. schrieb: > - Klar ist, dass man vieles weglassen muss. Ich finde aber teilweise > die Auswahl der Komplexität merkwürdig. So lässt du zum Beispiel das > extrem gängige "const& für Parameter"-Konstrukt weg. Ok. Dafür erklärst > du aber das wirre Konstrukt, wie man in der Windows-Konsole die > Zeichenkodierung ändert? Ich weiß nicht ob das ein kluger Tradeoff ist. > > - LD_LIBRARY_PATH ist Murks, und das schon eigentlich immer. Das ist > was für Endbenutzer, die irgendwas workarounden wollen. Für > Development-Setups auf Linux sollte man das Buildsystem eher so bauen, > dass es RPATH/RUNPATH richtig setzt. Ich empfinde nun gerade RPATH eher als Murks. Die Pfade sollten nicht im Programm hartkodiert sein. In der Regel packt man einfach das Setzen von LD_LIBRARY_PATH mit dem Programm-Aufruf zusammen in ein Shellskript. > - Wie quasi in allen Tutorials finde ich Text I/O stark überbetont -- > sehr wenige Menschen schreiben Konsolenanwendungen, und zu > Diagnosezwecken ist qDebug() einem QTextStream(stdout) stark überlegen. Allerdings muss man da ein bisschen aufpassen. Bei manchen Linux-Distributionen wurde qDebug kaputtkonfiguriert. Das hat mich letztens fast zur Verzweiflung gebracht. Es fehlten einfach qDebug-Ausgaben, die ich eingebaut hatte, um zu sehen, ob ich an eine bestimmte Stelle im Code komme, die nicht funktionierte. Ich hatte mich gefragt, warum zum Teufel der Code nicht aufgerufen wird, aber er wurde. Nur qDebug war halt stillgelegt. Nach etwas Googelei kam folgendes raus: Es gibt wohl irgendein KDE-Programm, das die Logfiles mit zu vielen Debug-Ausgaben zuspammt. Deshalb hat jemand die glorreiche Idee gehabt, das nicht etwa zu fixen, sondern stattdessen einfach der Default global für alle Programme qDebug komplett abzuschalten. Die Lösung ist, in ~/.config/QtProject eine leere Datei namens qtlogging.ini anzulegen. > - Der Ternary-Operator wird vor dem if/else eingeführt, wirklich? :D > Lass ihn einfach weg. Den halte ich auch für Anfänger für erstmal eher weniger wichtig. > - Genauso würde ich die Bitweise-Operatoren weglassen. Das ist super > spezielles Zeug, den man bei normaler Software so gut wie nie benötigt. Bei Qt muss man doch ständig irgendwelche Flags verodern. Die Operatoren gehören für mich schon zu den wichtigen Grundlagen.
Rolf M. schrieb: >> - LD_LIBRARY_PATH ist Murks, und das schon eigentlich immer. Das ist >> was für Endbenutzer, die irgendwas workarounden wollen. Für >> Development-Setups auf Linux sollte man das Buildsystem eher so bauen, >> dass es RPATH/RUNPATH richtig setzt. > > Ich empfinde nun gerade RPATH eher als Murks. Die Pfade sollten nicht im > Programm hartkodiert sein. In der Regel packt man einfach das Setzen von > LD_LIBRARY_PATH mit dem Programm-Aufruf zusammen in ein Shellskript. Leider hat sich das Design von RPATH/RUNPATH auch nicht gerade mit Ruhm bekleckert. Es ist aber immer noch weniger murksig als LD_LIBRARY_PATH. Die generelle Strategie momentan ist, RPATH oder RUNPATH korrekt zu setzen wenn das Programm gebaut wird. Dann kann es aus dem Build-Verzeichnis ohne irgendwelches Setup korrekt gestartet werden. Beim installieren ("install"-Target des Build-Systems) wird RPATH wieder entfernt, denn ab dann sollten stattdessen die System-Linker-Suchpfade benutzt werden. Das ist zum Beispiel das Standard-Verhalten von CMake. "LD_LIBRARY_PATH mit Shellskript" ist eine Murkslösung, denn du kannst ohne elendes Gefrickel keine Kindprozesse vom System mehr starten. Die erben nämlich dann alle deinen (für sie falschen) LD_LIBRARY_PATH und versuchen irgendwas von irgendwo zu laden, nur nicht das was sie sollten. Den ursprünglichen Wert von LD_LIBRARY_PATH bekommst du dann auch nicht mehr ohne weiteres raus. Für QT_PLUGIN_PATH gilt übrigens dasselbe: hier ist stattdessen qt.conf o.ä. die bessere Lösung. Generell finde ich, dass Anwendungen zum Starten von sich aus keinerlei Umgebungsvariablen brauchen sollten; die sind was für den Endbenutzer und sein spezifisches Setup, nicht für mein Deployment. Die LD_LIBRARY_PATH-Variante hat noch andere nervige Nachteile, so ist es zum Beispiel schwieriger, das Programm in einem Debugger oder Profiler oder in strace oder so zu starten. Versuche mal deine IDE dazu zu bewegen, das Shellskript als Debug-Target zu nehmen ...
:
Bearbeitet durch User
> Bei Qt muss man doch ständig irgendwelche Flags verodern. Die Operatoren > gehören für mich schon zu den wichtigen Grundlagen. Das sehe ich genauso. Vor allem bei Leuten die von hier kommen. Die kommen ja alle aus der Hardwareecke und wollen irgendwas mit Hardware machen. Nur die wenigsten werden sich wohl ein Programm fuer ihre Steuererklaerung oder ein Game schreiben. Olaf
Die Operatoren sind aber in QFlags eh überladen und sind nicht mehr die original bitweise-ops. So ähnlich wie der operator<< vom text stream. Da hilft es dir auch wenig, wenn du weißt dass der left shift macht ;) Will sagen, das Wissen "um Flags A und B anzugeben schreibe ich A | B" ist ziemlich unabhängig von diesen C-Bitweise-Operatoren.
:
Bearbeitet durch User
Hab gerade eigentlich was ganz andere gesucht, aber durch Zufall das hier gefunden: https://www.proggen.org/doku.php?id=start Da kann man C lernen, darauf aufbauend C++ und darauf aufbauend Qt. Fand ich garnicht so schlecht... Olaf
Olaf schrieb: > Da kann man C lernen, darauf aufbauend C++ und darauf aufbauend Qt. Das ist der klassische Weg, den auch ich gegangen war. Vor C kam bei mir noch Assembler, allerdings auf einem 8 Bit Rechner (C64) und davor getaktete Logikschaltungen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.