Forum: PC-Programmierung Einsteiger Anleitung: Programmieren lernen mit Qt


von Stefan F. (Gast)


Lesenswert?

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.

von Oliver S. (oliverso)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

Für Anfänger ist das schon hammerhart komprimierter Stoff, oder?

von Olaf (Gast)


Lesenswert?

> 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

von Oliver S. (oliverso)


Lesenswert?

Ich sag mal vorsichtig, die "Zielgruppe" für diese Art proggen zu lernen 
sucht seit Jahren eher auf youtube...

Oliver

von Oliver S. (oliverso)


Lesenswert?

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
von Stefan F. (Gast)


Lesenswert?

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

von Markus (Gast)


Lesenswert?

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

von Olaf (Gast)


Lesenswert?

> 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

von Plattformübergreifer (Gast)


Lesenswert?

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

von Oliver S. (oliverso)


Lesenswert?

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

von nun ja (Gast)


Lesenswert?

... 
.ObjektorientierungVorIfAnweisungenZuThematisierenFindeIchÄußerstFragwür 
digmehrhabeichnichtgelesen

von Stefan F. (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

nun ja schrieb:
> ObjektorientierungVorIfAnweisungenZuThematisierenFindeIchÄußerstFragwür
> digmehrhabeichnichtgelesen

Dann guck dir mal an, die die Arduino Tutorial beginnen.

von Dirk K. (merciless)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

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.

von Elias K. (elik)


Lesenswert?

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
von Markus (Gast)


Lesenswert?

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?

von Timo N. (tnn85)


Lesenswert?

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. :)

von Stefan F. (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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!

von Timo N. (tnn85)


Lesenswert?

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.

von Elias K. (elik)


Lesenswert?

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
von Huppel (Gast)


Lesenswert?

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.

von Markus (Gast)


Lesenswert?

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"?

von Lutz S. (lutzs)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

Vielen Dank für euer Feedback. Ich habe einige Verbesserungsvorschläge 
übernommen.

von Jack V. (jackv)


Lesenswert?

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 :)

von Michael W. (dbru61)


Lesenswert?

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.

von Olaf (Gast)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

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.

von Wilhelm M. (wimalopaan)


Lesenswert?

Warum überhaupt diese Mühe mit einem Low-Level-Einstieg?

Die Summerfield Bücher sind doch sehr gut.

von Stefan F. (Gast)


Lesenswert?

Wilhelm M. schrieb:
> Die Summerfield Bücher sind doch sehr gut.

Unter dem Namen finde ich nur Romane. Welche Bücher meinst du?

von Wilhelm M. (wimalopaan)


Lesenswert?


von Stefan F. (Gast)


Lesenswert?

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.

von Oliver S. (oliverso)


Lesenswert?

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
von Wilhelm M. (wimalopaan)


Lesenswert?

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

von Wilhelm M. (wimalopaan)


Lesenswert?

Stefan ⛄ F. schrieb:
> Soll ich deswegen jetzt nochmal alles umschreiben?

Ja, bitte.
Vor allen Dingen solltest Du an dem Inhalt arbeiten!

von Stefan F. (Gast)


Lesenswert?

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.

von Olaf (Gast)


Lesenswert?

> 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

von Elias K. (elik)


Lesenswert?

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!

von Kurt (kurtcontroller)


Lesenswert?

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

von Wilhelm M. (wimalopaan)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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.

von vomo (Gast)


Lesenswert?

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!

von Mike R. (thesealion)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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.

von Mike R. (thesealion)


Angehängte Dateien:

Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

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.

von Olaf (Gast)


Lesenswert?

> 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

von Stefan F. (Gast)


Lesenswert?

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.

von Jasson J. (jasson)


Lesenswert?

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.

von Wilhelm M. (wimalopaan)


Lesenswert?

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.

von Rolf M. (rmagnus)


Lesenswert?

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.

von Wilhelm M. (wimalopaan)


Lesenswert?

Stefan ⛄ F. schrieb:
> Ich habe eine Anleitung geschrieben, die Anfängern dabei helfen soll,
> das Programmieren zu erlernen.

Hier steht nichts von GUI ...

von Olaf (Gast)


Lesenswert?

> 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

von Rolf M. (rmagnus)


Lesenswert?

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.

von Mitleser (Gast)


Lesenswert?

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!

von Stefan F. (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

Rolf M. schrieb:
> Soweit ich verstanden habe ...

Genau das ist der Sinn der Anleitung.

Wer etwas anderes braucht, soll woanders lesen.

von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?

http://stefanfrings.de/dippekuchen/index.html

Schmeckt das wirklich mit dem Geräucherten und dazu Apfel- oder 
Birnenmus?

von Stefan F. (Gast)


Lesenswert?

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.

von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?

Stefan ⛄ F. schrieb:
> Dippekuchen sieht allerdings wie Kotze aus - ist nicht jedermanns Sache.

Die meisten geilen Sachen sehen wie Kotze aus.

von Jasson J. (jasson)


Lesenswert?

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

von Olaf (Gast)


Lesenswert?

> 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

von Olaf (Gast)


Lesenswert?

Noch als Anmerkung, meine Erfahrungen beruhen natuerlich auf Linux als 
Host und auf Qt 5.12.4.

Olaf

von Stefan F. (Gast)


Lesenswert?

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.

von Olaf (Gast)


Lesenswert?

> 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

von Stefan F. (Gast)


Lesenswert?

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.

von Olaf (Gast)


Lesenswert?

> 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

von Konrad S. (konrad_s)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

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.

von Konrad S. (konrad_s)


Lesenswert?

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?

von Stefan F. (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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.

von Konrad S. (konrad_s)


Lesenswert?

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.

von alpspix (Gast)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

Mike R.
könntest du bitte nochmal das aktuelle Layout prüfen, ob es auf deinem 
großen Bildschirm jetzt akzeptabel aussieht?

von NichtWichtig (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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.

von Rolf M. (rmagnus)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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.

von NichtWichtig (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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.

von Rolf M. (rmagnus)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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.

von Sven B. (scummos)


Lesenswert?

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.

von Wilhelm M. (wimalopaan)


Lesenswert?

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.

von Rolf M. (rmagnus)


Lesenswert?

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
von Rolf M. (rmagnus)


Lesenswert?

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.

von Sven B. (scummos)


Lesenswert?

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
von Olaf (Gast)


Lesenswert?

> 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

von Sven B. (scummos)


Lesenswert?

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
von Olaf (Gast)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.