[GELÖST] Umstieg GTK2 -> QT5: Unterschied Design / Runtime

Rund um die LCL und andere Komponenten
Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5483
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: Umstieg GTK2 -> QT5: Unterschied Design / Runtime

Beitrag von af0815 »

Bei gtk3 und höher dürfte sehr viel mit einem Tool gir2pas passieren und es gibt dort scheinbar zu wenige Entwickler und Tester. Das zumindest ist mal mein Eindruck. Auch ein Problem ist, das es scheinbar keine Umsetzung von den höheren GTK Versionen mehr für Windows gibt.

Ich würde es nicht ganz außer acht lassen. Weil bei QT dürfte alles auch nicht so eitle Wonne sein, zwischen der komerziellen Variante und der Communityversion. Manchmal kann da einiges rasch kippen, wie die Diskussionen in der Vergangenheit gezeigt haben (Zumindest wie sie bei mir angekommen sind).
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

hum4n0id3
Beiträge: 173
Registriert: So 5. Mai 2019, 15:23

Re: Umstieg GTK2 -> QT5: Unterschied Design / Runtime

Beitrag von hum4n0id3 »

petwey hat geschrieben:
So 20. Nov 2022, 17:08

- Gibt es irgendwo eine Anleitung, wie man stilagnostisch programmieren sollte?
- Gibt es eine Möglichkeit einem Programm ein festes Theme zuzuordnen, so das die Umgebung keinen Einfluß auf die Oberflächengestaltung hat?
Ich glaube das es unter Lazarus so gar nicht geht. Da müsstest du wohl auf andere Sprachen umsteigen wie Java mit Swing oder JavaFX. Eine Electron-App vielleicht.

Aber zunächst erstmal feststellen ob es überhaupt ein Problem ist. Wenn du dem Kunden deine Software verkaufst, gibst du auch eine bestimmte Konfiguration mit, eine Mindestanforderung, worauf und womit deine Software läuft.

Hast du überhaupt Linux-Kunden? In aller Wahrscheinlichkeit nutzen deine Kunden Windows. Vielleicht hast du paar „Exoten“ die MacOS nutzen. Dann kann man mit Lazarus auch diese bedienen.

Bei Linux würde ich mich auf eine verbreitete Unternehmens-Distribution mit einem Desktop mit einem Standard-Theme festlegen. Das wäre wohl breeze oder adweita. Weicht ein Kunde davon ab, darauf Hinweisen wie die Mindestanforderungen sind. Beharrt er auf seine Lösung, extra Vertrag mit extra Kosten, da extra Aufwand.

So mein Gedanke.

petwey
Beiträge: 57
Registriert: Sa 24. Nov 2012, 19:00
OS, Lazarus, FPC: Windows10 und Linux 32 und 64Bit (L 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit und 64Bit

Re: Umstieg GTK2 -> QT5: Unterschied Design / Runtime

Beitrag von petwey »

Hallo Forum,

Ich möchte meine Überlegung abrunden ein Programm zu erstellen, das unabhängig von den Einstellungen der Themes ist. Dabei bin ich über fpgui gestolpert, hab ne ganze Menge gelesen, das Git geklont mit

Code: Alles auswählen

git clone https://github.com/graemeg/fpGUI.git
und nach den Anweisungen von https://wiki.freepascal.org/fpGUI_Interface die Dateien kopiert und die Projekteinstellungen angepasst. Aber beim sauberen Kompilieren bleib ich jedesmal hängen mit der Meldung

Code: Alles auswählen

fpguicrosshelpers.pas(10,5) Fatal: Kann fpg_main nicht finden verwendet von fpguicrosshelpers.
Die Datei gibts aber unter

Code: Alles auswählen

~/lazarus/2.2.4/lcl/interfaces/fpgui/corelib
Muss ich jetzt den Suchpfad im Projekt anpassen? Ich dachte das wird durch die beiden IDE Macros erledigt. Wer hat in letzter Zeit mal mit dem Widgetset fpGui gearbeitet?
MfG,
petwey

Windows 10 und Linux 32 und 64Bit (L 2.2.2 FPC 3.2.2)

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5483
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: Umstieg GTK2 -> QT5: Unterschied Design / Runtime

Beitrag von af0815 »

Ich bin mir nicht sicher ob der liebe Graeme noch fpgui aktiv hält (Hat meines Wissens den beruflichen Schwerpunkt geändert). Es ist ein custom drawn Widgetset. Für mich ist es eher ein Exot.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Warf
Beiträge: 1693
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Umstieg GTK2 -> QT5: Unterschied Design / Runtime

Beitrag von Warf »

petwey hat geschrieben:
So 20. Nov 2022, 17:08
- Gibt es irgendwo eine Anleitung, wie man stilagnostisch programmieren sollte?
Als ganz einfache Faustregel, entweder machst du alles selbst oder Nichts. Lazarus bietet einige Farbkonstanten an die so genannten Systemfarben. Diese Farben werden vom System geladen und entsprechen damit immer dem System Theme. Solang du dich nur der Systemfarben bedienst wird deine App in jedem Style "gut" aussehen (zumindest in dem Maße wie der Systemstyle gut aussieht).
Z.B. clWindowText ist die Farbe die das Systemtheme für Text vorsieht, in einem Darktheme ist die normalerweise Hell und in einem Bright theme normalerweise Dunkel. Wenn ich jetzt ein Edit nehme und dort die Hintergrundfarbe auf eine Non Systemfarbe ändere, aber der Text bleibt die Systemfarbe clWindowText, dann hab ich das Problem das das unter verschiedenen Designs verschieden aussieht.
BadContrast.PNG
BadContrast.PNG (33.87 KiB) 134 mal betrachtet
In diesem Beispiel habe ich einmal im Designer das Helle Theme von Breeze und Kompiliert zu QT5 mit dem Dunklen Theme von Breeze, und ein Edit mit Grünem Hintergrund (z.B. wenn man ne Eingabe checkt un dem Nutzer Suggerieren will das alles stimmt). Im Bright Theme sieht es sehr gut aus, im Dark theme allerdings ist der Kontrast zwischen Hellgrün und Weiß viel zu gering und man erkennt nichts.
Von daher wie gesagt die Faustregel, entweder alles selbst machen (also nichtn nur Hintergrundfarbe anpassen, sondern auch Textfarbe und womöglich auch Selektionsfarbe), oder nur Systemfarben verwenden.
Generell, gilt Systemfarben sind tendentiell das Einfachste und es sieht immer so aus wie erwartet

petwey hat geschrieben:
So 20. Nov 2022, 17:08
- Gibt es eine Möglichkeit einem Programm ein festes Theme zuzuordnen, so das die Umgebung keinen Einfluß auf die Oberflächengestaltung hat?
Die Idee einfach Cross benutzbarkeit zu gewährleisten indem es immer gleich aussieht ist nicht neu, aber hier wäre ich sehr vorsichtig. Java hatte das damals bei JavaFX so gemacht, und das ergebnis war das man eine JavaFX anwendung auf 10 Kilometer gegen den Wind erkennen konnte, da es einfach auf jedem System nicht reingepasst hat. Das hat Java anwendungen tatsächlich einen recht schlechten Ruf eingefahren und dazu geführt das einige Java communities dann so genannte "native" themes gebaut haben die die Originalsystemstyles wiederspiegeln. Viele Java Entwickler haben auch auf Swing gewechselt, was genau deshalb den "native" style als standard drin hat.
Vor allem ist das Wichtige das es ins System passt. Z.B. sind Dark Themes sehr beliebt, sowohl Windows, Mac als auch die meisten Linux Desktops haben ein Darktheme mittlerweile von haus aus dabei (siehe Breeze Dark von KDE in obigen screenshots). In einem Vollkommen Dunklen system Stechen nicht Dunkle Anwendungen hervor, und können sogar in den Augen wehtun (ich spreche hier aus Erfahrung). Anwendungen die also ein eigenes Theme haben, und sich nicht an das bestehende System anpassen (zumindest was Bright/Darkmode angeht), können eher dazu führen das das erste was der Anwender macht ist die Anwendung zu deinstallieren und sich eine besser einfügende alternative zu suchen (so habe ich z.B. deshalb von KeePass auf KeePassXC gewechselt)

Es gibt einige Anwendungen die das gut machen, Microsofts VSCode oder auch die Jetbrains Produkte fallen mir da spontan ein. Die sind aber von Firmen mit ganzen Designer Teams die mal eben eine 80 millionen dollar Studie durchführen um Rauszufinden was der perfekte Blauton für Links ist. Die meisten Programmierer sind keine Designer, und sollten sich von der Idee selbst Styles zu erstellen womöglich fernhalten. Wenn man das Geld hat sich vernünftige Designer zu leisten, kann man gerne einen eigenen Style bauen, doch wenn man das als non designer versucht, sieht es am ende wahrscheinlich einfach nur schlechter aus.
Außerdem bieten diese Anwendungen wie VSCode normalerweise auch verschiedene Styles an, mindestens einen Bright und einen Dark Mode.
- Was ist eurere Meinung nach das zukunftsträchtigste Widgetset? Auf welches Pferd würdet ihr setzen? Nach allem was ich erlebt und gelesen habe scheint Gtk2 auszuscheiden und die höheren Versionen von Gtk auch nicht richtig umgesetzt zu sein.
Das tolle ist, bei Lazarus muss dich das eigentlich nicht interessieren, egal welches WS die anwendung sollte (bis auf Bugs wie den den du entdeckt hast) eigentlich größtenteils Identisch laufen. Allerdings um mal auf die Frage allgemein zu Antworten, GTK2 ist tot (offiziell EOL seit 2 Jahren), GTK3 wird nicht völlig von Lazarus unterstützt, QT5 Funktioniert, QT6 ist aktuell in der Entwicklung.
Also ist die Wahl relativ einfach: QT5 und irgendwann dann 6

Warf
Beiträge: 1693
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Umstieg GTK2 -> QT5: Unterschied Design / Runtime

Beitrag von Warf »

petwey hat geschrieben:
So 20. Nov 2022, 21:00
Ich möchte meine Überlegung abrunden ein Programm zu erstellen, das unabhängig von den Einstellungen der Themes ist. Dabei bin ich über fpgui gestolpert, hab ne ganze Menge gelesen, das Git geklont mit
Persönliche Meinung: Halte dich von FPGui und CustomDrawn fern wenn du seriös wirken willst. Der Stil von beiden Widgetsets sieht aus wie altes Windows 2000. Persönlich kannst du von dem Theme ja halten was du willst, aber wenn Leute einen 20 Jahre alten Style sehen, ist vermutlich die erste Annahme das das Programm so alt sei und vermutlich nicht mehr weiterentwickelt wird. Was alt aussieht wird als alt Wahrgenommen, egal wie modern es ist. Mal ganz davon abgesehen das viele den alten Grau auf Grau Backsteinstil nicht sehr ansprechend finden. Und der erste Eindruck ist bei vielen Anwendungen oftmals das was zählt. Wenn eine App nicht ansprechend aussieht, wird sie entweder gar nicht runtergeladen, oder der Nutzer gibt ihr nicht so eine chance wie wenn er sie hübsch findet. Da kann die Anwendung noch so gut sein, wenn der Nutzer ihr nie eine chance gibt

petwey
Beiträge: 57
Registriert: Sa 24. Nov 2012, 19:00
OS, Lazarus, FPC: Windows10 und Linux 32 und 64Bit (L 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit und 64Bit

Re: Umstieg GTK2 -> QT5: Unterschied Design / Runtime

Beitrag von petwey »

Hallo af0815, hallo warf,

ich wollte mir fpgui nur mal ansehen um mein Entscheidung zu fundieren mit welchem Widgetset ich weitermachen soll. Beim Probieren und rumlesen hatte ich auch schon den Verdacht das fpgui nicht mehr recht gepflegt wird, auch die Anleitung wie es zu installieren / einrichten ist hat meiner Meinung nach nicht mehr gepasst, sonst hätte es ja bei mir laufen sollen.

Ich bin froh hier auch mal eine relativ klare Aussage erhalten zu haben warum ich jetzt auf Qt5 setzen sollte.

Mit den Farben habe ich kein besonderes Problem, denn ich verwende in der Regel die Systemfarben. Was mich allerdings schockiert hat war die Platzverschwendung mit denen einige Themes daherkommen. Ich muss in meinem Programm noch ein wenig Platz schaffen, da die Beschriftungen oftmals mehr Raum benötigen, zumal ich Übersetzungen für meine Oberflächen angefertigt habe (zumindest de / en). Aber der Unterschied zwischen den Themes Window und HighContrast ist schon wirklich krass. Wenn hier Programmierer auf Basis eines Window-Themes eine Oberfläche aufgebaut haben, wird sie unter Verwendung des HighContrast-Themes meiner Meinung nach gnadenlos unbrauchbar.

Ich habe aber Glück. Wir betreiben Anlagen die über längere Zeit unbeaufsichtigt Messungen durchführen und wenn Windows (nicht das Theme) jetzt gerade heute Nacht mal wieder ein Update fährt, dann schert es sich nicht darum ob wertvolle Daten verloren gehen. Das ist gerade heute wieder mal geschehen, mein Kollege war sehr erfreut darüber! Aus diesem Grund habe ich schon vor längerer Zeit entschieden auf Linux umzustellen. Gott sei Dank habe ich schon vor Jahren eine Entscheidung Richtung Lazarus getroffen, da es schon damals auf unterschiedlichen Systemen lief. Meine Programme lassen sich recht gut nach Linux portieren. Jetzt wollte ich nur noch die richtige Wahl des Widgetsets treffen. Und warum hab ich Glück? Weil ich zu unseren Anlagen, auch wenn ich Sie verkaufe, einen Anlagen-PC hinzupacke. Bei diesem PC habe ich vollkommen freie Hand. Dieser PC hängt auch nicht im Internet. Der Anwender kann entweder direkt mittels des Anlagen-PCs arbeiten oder er schaltet sich über einen Bediener-PC per VNC auf. Damit kann die IT-Abteilung Updates auf den Bedien-PCs fahren und mein System bleibt unberührt. Also kann ich auch festlegen welches Widgetset und welches Theme zu verwenden ist.

Ihr habt mir sehr geholfen, so dass ich jetzt sicher sein kann, eine gute, für die Zukunft einigermassen beständige Wahl getroffen zu haben. Ich werde QT5 mit dem Theme Windows einsetzen.

Ich sage nochmals herzlichen Dank an alle die mir geholfen haben und setze das Thema auf GELÖST.
MfG,
petwey

Windows 10 und Linux 32 und 64Bit (L 2.2.2 FPC 3.2.2)

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5483
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: Umstieg GTK2 -> QT5: Unterschied Design / Runtime

Beitrag von af0815 »

petwey hat geschrieben:
Mo 21. Nov 2022, 20:46
Meine Programme lassen sich recht gut nach Linux portieren. Jetzt wollte ich nur noch die richtige Wahl des Widgetsets treffen. Und warum hab ich Glück? Weil ich zu unseren Anlagen, auch wenn ich Sie verkaufe, einen Anlagen-PC hinzupacke. Bei diesem PC habe ich vollkommen freie Hand. Dieser PC hängt auch nicht im Internet. Der Anwender kann entweder direkt mittels des Anlagen-PCs arbeiten oder er schaltet sich über einen Bediener-PC per VNC auf. Damit kann die IT-Abteilung Updates auf den Bedien-PCs fahren und mein System bleibt unberührt. Also kann ich auch festlegen welches Widgetset und welches Theme zu verwenden ist.
Wir haben bei uns ein Ähnliches Umfeld seit ! Jahren. Wir haben uns gegen QT entschieden, auch weil wir viele RasPi's in verschiedenen Konfigurationen laufen. Es gibt sehr wohl gute industrielle RasPi's am Markt, mit Touch und 12-24Volt Anschluss. Dort haben wir schlechte Erfahrung mit QT gemacht (und weniger schlechte mit GTK). Für die IndustriePC nehmen wir generell Debian aufgrund der stockkonservativen Paket und Änderungsgestaltung. Ubuntu nur im LTS und nur dann wenn es aus einem Grund Debian nicht geht. Beispiel MS-SQL läuft excellent auf dem jeweiligen Ubuntu LTS Server headless, MS-SQL ist bei uns bevorzugt, weil auch der Kunde solche Server hat und es über die M$ Tools administrieren kann.

Zu den Widgets, Es wurde bereits am Anfang der Focus darauf gelegt, das die Applikationen am Windows-PC entwickelt werden können und dann auf die verschiedenen Devices mit verschiedenen Auflösungen (auch hochkant) laufen. Dadurch das die Layouts sehr stabil gemacht wurden (auch gegen Änderungen des Widgetsets), ist das kein Problem. Auch so Dinge, das unter WIndows Buttons keine Farben haben können, unter Linux schon, wurden berücksichtigt und entsprechend Designed. Klarerweise mit dem kleinsten gemeinsamen Nenner. Layouts mit Anchors und, und ... Ach ja und unter WIndows ein anderes Widget erzwingt, ist auch nicht unbedingt das gelbe vom Ei wie ich erfahren habe. Nativ ist nativ !

Zusammengefasst ist das WIdgetset eines der Sachen, die man in eine App hineindesignen kann, wenn man vorher darüber Nachdenkt.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten