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

Rund um die LCL und andere Komponenten
petwey
Beiträge: 83
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

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

Beitrag von petwey »

Hallo Forum,

da ich einige Schwierigkeiten mit gtk2 hatte (siehe: viewtopic.php?f=18&t=14549), habe ich angefangen mein Projekt auf qt5 umzustellen. Dabei ist mir aufgefallen, das meine Design-Oberfläche sich stark von der Runtime-Oberfläche unterscheidet.

Ich habe wie beschrieben das Widgetset auf qt5 umgestellt und das Programm kompiliert. Da ich erst dachte es liegt noch an meinem "alten" Programm, hab ich mal ein kleines Testprogramm neu aufgebaut und konnte hier das Ergebnis reproduzieren.

Bild der Design-Oberfläche:
design.jpg
design.jpg (37.78 KiB) 1247 mal betrachtet
Bild der Runtime-Oberfläche:
rumtime.jpg
rumtime.jpg (14.72 KiB) 1247 mal betrachtet
Man sieht ganz schön, die Texte der Menüs sind verschwunden, die GroupBox sieht ganz anders aus, usw.

Das ich es hier mit einem anderen Thema zu tun habe ist mir klar, nur sollte es wenigstens bei Entwicklung und Laufzeit gleich sein.

Irgendwas muss ich übersehen haben. Bitte um Hilfe.

Source-Code:
Projekt.zip
(13.56 KiB) 33-mal heruntergeladen
Zuletzt geändert von petwey am Mo 21. Nov 2022, 20:47, insgesamt 1-mal geändert.
MfG,
petwey

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

Benutzeravatar
theo
Beiträge: 10499
Registriert: Mo 11. Sep 2006, 19:01

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

Beitrag von theo »

Ganz einfach: Wenn du die GTK2 IDE benutzt, siehst du auch GTK2 Formulare im Designer.
Du kannst die IDE gegen Qt5 bauen und dann bekommst du Qt5 Formulare in der IDE. (Werkzeuge -> Lazarus kompilieren einrichten).
Und Glyphs im Hauptmenü oben habe ich noch in keiner Anwendung gesehen. Das sieht nicht gut aus.
Mach es einfach normal als Text und dann klappt's auch überall. :wink:

petwey
Beiträge: 83
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 theo,

erstmal Danke für die Tipps.

Beim kompilieren bekomme ich mit SdpoFastForm Ärger. Ich vermute ein ähnliches Problem wie bei lclnet https://forum.lazarus.freepascal.org/in ... ic=48393.0
Dieses Problem musste ich schon bei der Umstellung auf qt5 lösen. Hier sind auch nur die Klauseln für gtk drin, aber ich weiß nicht auf was ich hier umstellen muss, damit die richtigen Units für qt5 verwendet werden, hier der Auszug aus dem fehlerhaftem Code von SdpoFastForm:

Code: Alles auswählen

{ SdpoFastForm v0.1.7
.......................
 }
unit SdpoFastForm; 

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, LResources, Controls, Graphics, LCLType, Forms,
{$IFDEF LINUX}
  xlib,
  {$ifdef LCLGTK2}
  gtk2, gdk2, gdk2x, x, gdk2pixbuf, glib2;
  {$endif}
  {$ifdef LCLGTK}
  gtk, gdk, glib;
  {$endif}
  // Eingefügt von petwey
  {$ifdef LCLQT5}
  // HIER müsste meiner Meinung nach die richtigen Units für qt5 rein, die weiß ich aber nicht!!
  {$endif}
  // Ende der Einfügung (petwey
{$ELSE}
  IntfGraphics, GraphType, LCLProc, LCLIntf;
{$ENDIF}

Ich hab die entsprechenden Stellen im Code markiert.

Welche Units gehören da rein?
MfG,
petwey

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

Benutzeravatar
theo
Beiträge: 10499
Registriert: Mo 11. Sep 2006, 19:01

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

Beitrag von theo »

Keine Ahnung, kenne ich nicht.
Aber es ist gut möglich, dass diese Unit schon älter ist und nie für Qt angepasst wurde.
Da helfen ein paar Einträge in die "Uses" wahrscheinlich nicht weiter.
Woher ist das?

petwey
Beiträge: 83
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 theo,

es gehört zu dem spdo-Paket. Ich benutze daraus nur die serielle Schnittstelle, deshalb hab ich diese Teile entfernt. Danach hat es kompiliert.....

...aber nicht ohne weiter Mucken.

Der wichtigste Fehler war, das das qt5 Verzeichnis in /usr/lib/lazarus/2.2.0/units/x86_64-linux sich nicht automatisch erstellen ließ, denn dazu sind root-Rechte notwendig.
Ich hab das qt5-Verzeichnis händisch als root erzeugt, dann wurde lazarus neu erstellt. Jetzt sieht die Design-Oberfläche wie die Runtime-Oberfläche aus.

Aber mir ist bei dem vielen kompilieren noch was aufgefallen - als Hinweis will ich es nicht richtig deklarieren:
- Wie von Dir beschrieben habe ich die IDE als qt5 zu kompiliert -> Führte zum vorangegangenen Fehler.
- Idee SdpoFastForm deinstallieren, aber sicherheitshalber zuerst wieder auf gtk2 zurückstellen und IDE kompileren -> Auch Fehler - jetzt bin ich ins Schwitzten gekommen, denn bisher hatte sich die IDE immer kompilieren lassen (vor allen Dingen, da das ja die Ausgangssituation war)!
- Ich hab dann die IDE beendet und neu gestartet und danach ließ sich die IDE mit gtk2-Einstellung wieder erzeugen.
- Überflüssige sdpo-Pakete entfernt und IDE neu erzeugt -> OK
- IDE mit qt5-Einstellung neu erstellt -> ERFOLG

Worauf will ich hinaus. Ich habe bereits in diesem Thread viewtopic.php?f=18&t=14549 beschrieben, dass mir in der Lazarus-IDE einiges aufgefallen ist:
Ich hatte das Problem, das mein gtk2-Programm mit ca. 30s Wartezeit gestartet ist. Danach habe ich das Projekt auf qt5 umgestellt und wieder zurück auf gtk2 (nicht die IDE) und das Projekt startete schnell. Nach Neustart des PCs war der negative Effekt wieder da. Ich hab mir dazu die Ausgaben beim Kompilieren angesehen und hatte den Eindruck, dass ich den positiven Effekt einem Fehler der IDE zu verdanken hatte, denn mein Umstellen auf qt5 wurde nach dem zurückstellen auf gtk2 nicht vollständig vollzogen. Beim Kompilieren waren diverse Einträge noch auf qt5 gestanden. Ich verstehe die Ausgaben nicht gut genug, aber die Leute, die die IDE programmieren sollten sich das vielleicht mal ansehen. Nach schließen der IDE und wieder Öffnen war dann alles in Ordnung (für mich leider nicht, denn mein Programm startete wieder zeitverzögert). Da ich das nicht in den Griff bekommen habe und das Gefühl bekam, das gtk2 langsam veraltet und nicht mehr gepflegt wird, habe ich mich dazu entschlossen auf qt5 umzusteigen.

Ich danke Dir nochmals. Entwurf und Runtime scheinen zusammenzupassen. Aber ich möchte das noch ein bißchen beobachten, bis ich den Thread als gelöst markiere.
MfG,
petwey

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

Warf
Beiträge: 1913
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 »

Wenn man größere Änderungen an den Projekteinstellungen macht (wie z.B. das Widgetset zu ändern) solltest du immer einen Clean Build machen (Menü -> Start -> Aufräumen und Kompilieren -> Löschen Button klicken) denn es kann vorkommen das Ansonsten beinflusste Units nicht neu kompiliert werden weil der Compiler denkt das sich nichts geändert hat (was ja auch im strikten Sinne stimmt, die Units sind identisch, nur die Rahmenbedingungen haben sich geändert). Gleiches gilt übrigens beim Kompilieren der IDE, unter Werkzeuge -> Kompilieren der IDE Einrichten solltest du bei änderungen der Einstellungen und des Widgetsets am besten "Alle aufräumen" anklicken (und den haken auf "Nach Neukompilierung zu Automatisch wechseln" auswählen damit das danach wieder zur Standardeinstellung zurückwechselt).

Bezüglich deinem Fehler mit dem QT Ordner in dem Lazarus Verzeichnis, das liegt daran das wenn du Lazarus über die Paketverwaltung installierst, wird es als root für alle Benutzer installiert, von daher benötigst du root rechte um auf die Dateien zuzugreifen. Das ist normal für die meisten Linux Anwendungen. Was allerdings bei Lazarus ein bisschen eigen ist, ist das um Pakete zu Installieren du Lazarus neu kompilieren musst, da die Pakete nicht dynamisch geladen werden sondern Statisch Reinkompiliert werden (also zumindest Designzeitpakete). Das ist natürlich dann ein Problem, da jeder Nutzer dafür einen eigenen Lazarus Build brauchen.
Wie Lazarus das löst ist das praktisch nur der "vanilla" build installiert wird, und sobald du was an Komponenten änderst ein custom build in deinem Nutzerverzeichnis erstellt wird den dein Nutzer von da an benutzt. Um allerdings an Compilezeit zu sparen, und zentrale Updates zuzulassen werden die Grund units von Lazarus und der LCL im Root verzeichnis mit der Installation bereitgestellt, sodass der Nutzer nur die Pakete selbst bauen muss und das dann Praktisch mit den bestehenden Kompilationsunits aus dem Root verzeichnis "Zusammengeklebt" wird.
Das ist eine eigentlich ziemlich schlaue Lösung für dieses Problem, allerdings macht das manchmal Probleme, zum einen wenn du ein Update machst kann der Nutzer auf seinem Nutzerbuild noch auf der veralteten version weiter arbeiten, bis er Lazarus einmal neu kompiliert. Zum anderen bedeutet das aber auch das Änderungen am "kern" von Lazarus entsprechende Root rechte benötigen. In deinem Fall hast du zwar nicht direkt was geändert, aber du musstest was hinzufügen (undswar den QT build der LCL), und von daher hat das root rechte benötigt. Das einfachste hier wäre gewesen mal eben Lazarus als root zu starten und das dann zu bauen.

Allerdings würde ich hier einfach generell empfehlen Lazarus nicht über die Paketverwaltung zu installieren, sondern einfach direkt im Nutzerordner selbst zu bauen. Hat auch zusätzlich den Grund das Größere Lazarusversionsänderungen Kompatibilität brechen können, wenn man also Lazarus immer mit dem System updated, hat man keine Wahl als immer die neuste Lazarus version zu verwenden (und damit eventuell ein bestehendes Projekt unbenutzbar zu gestealten). Von daher würde ich empfehlen einfach ne eigene Lazarusinstallation unter deinem Nutzer aufzusetzen, damit sparst du dir die Probleme die durch die Zentrale installation auftauchen (die du schon oben bemerkt hast), und hast gleichzeitig mehr kontrolle über die Installation sowie versionierung und kannst auch mehrere Lazarus installationen verschiedener Versionen verwalten.

Der wohl einfachste weg hierfür ist wahrscheinlich FPCUp(deluxe). Das ist vor allem sehr gut wenn du auch eine bestimmte FPC version haben möchtest. Wenn es aber nur um Lazarus geht und du overhead vermeiden willst (und du ein bisschen Linux Kentnisse hast) kannst dus auch einfach per Hand bauen. Beispiel zur Installation von Lazarus 2.2.4 übers Terminal:

Code: Alles auswählen

$> cd ~/Development/lazarus
# Downloaden von Lazarus
$> git clone --depth 1 https://gitlab.com/freepascal.org/lazarus/lazarus.git --branch lazarus_2_2_4 2.2.4 # --branch um die version auszuwählen, hier ists 2.2.4, --depth 1 macht einen "shallow clone" spart dabei speicher und ist schneller
# Lazarus bauen
$> cd 2.2.4
$> make
# Konfigurationsordner einstellen, damit verschiedene Lazarus versionen eigene Konfigurationen haben können
$> echo --pcp=$(pwd)/config > lazarus.cfg
Dann um einen Startmenü Eintrag für Lazarus zu erstellen musst du nur noch eine .desktop Datei in ~/.local/share/applications erstellen. Beispiel für oben die datei ~/.local/share/applications/lazarus2_2_4.desktop:

Code: Alles auswählen

[Desktop Entry]
Encoding=UTF-8
Version=2.2.4
Type=Application
Categories=Development
Terminal=false
Exec=/home/username/Development/lazarus/2.2.4/startlazarus
Name=Lazarus 2.2.4
Icon=/home/username/Development/lazarus/2.2.4/images/icons/lazarus.ico
So mache ich es tatsächlich meistens, ich habe immer die neuste Stable version vom FPC über den Systempaketmanager installiert. Im Gegensatz zu Lazarus muss man den nicht neu kompilieren, und ist auch eigentlich ziemlich Rückwertskompatibel im gegensatz zu Lazarus wo LCL Änderungen massiv Anwendungen beinflussen können. Außerdem ist es immer brauchbar einen stabilen FPC im Suchpfad zu haben wenn man mal keine lust hat Lazarus zu starten um was schnelles zu machen. Und damit manage ich dann meine Lazarusinstallationen per Hand.
Vor allem manche Pakete können manchmal etwas zickig sein (indy hat früher dazu gehört), sodass ich dann z.T. einfach separate Lazarus Installationen für bestimmte Projekte hatte die dann ganz spezielle Pakete brauchten, aber mein "Standard" Lazarus dann möglichst schlank blieb um schnell kleinere Programme aufzuziehen.

Wenn dir das Oben aber zu Kompliziert aussieht, schau dir einfach FPCUp an, ist zwar ein bisschen nervig, z.B. sind die Versionen gehardcoded sodass man neue versionen haben will man immer zu erst eine neue version von FPCUp herunterladen muss.
Das gesagt, wenn ich nen spezialbuild vom FPC brauche (z.B. einen Trunk build um neue coole features auszuprobieren), dann benutz ich auch lieber FPCup, denn FPC bauen ist nicht so entspannt wie Lazarus selbst bauen

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

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

Beitrag von af0815 »

Mit fpcupdeluxe ist es kein Problem zwei getrennte Lazarus/Fpc installationen zu haben. Da kann man schon mal gtk und qt nebeneinander haben, wenn man will. Ich selbst habe mit den Paketen der Distribution nur Probleme gehabt. Wenn man nur Lazarus ohne Komponenten verwendet ist es noch ok, wenn man anfängt Pakete zu installieren oder Lazarus zu debuggen, dann ist Schluss mit lustig.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

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

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

Beitrag von hum4n0id3 »

Wenn ich recht verstehe fehlt dir das entsprechende Qt->Gtk Theme, damit es unter Gtk wie Gtk aussieht. Wenn du adweita nutzt, brauchst qt-adweita oder wie es auch immer unter der jeweiligen Distribution heißt. Danach sollte es wie Gtk aussehen.

petwey
Beiträge: 83
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 warf,

das war mit Abstand die beste Erklärung, die ich in diesem Zusammenhang erhalten habe.

Tatsächlich hatte ich bereits mit fpcdeluxe eine Installation von Lazarus durchgeführt, aber bin dabei auf Probleme gestoßen (auf welche weiß ich nicht mehr). Danach bin ich wieder zur Paket-Installation der Distro zurückgekehrt. Das war so weit ganz gut, bis ich auf die gtk2-begründete Startverzögerung gestolpert bin. Das war der Leidensweg bis dahin.

Dann hab ich mich an deine Anweisungen gehalten (Die Paket-Installation war noch parallel vorhanden.) und hab anschließend die fehlenden Pakete eingespielt.
An der Stelle hatte ich die Vermutung, das sich die Probleme mit gtk2 eventuell durch die saubere Installation aus den git-Quellen auflösen würden und meinem Problem-Projekt nochmal das widgetset gtk2 verpasst und wie Du beschrieben hast clean kompiliert. Das hat allerdings wieder zum verzögerten Start meines Programms geführt.
Also wieder auf qt5 umgestellt und clean kompiliert -> Schneller Start, aber Design und Laufzeit sehen unterschiedlich aus.
Also die IDE clean auf qt5 umgestellt und mein Programm neu kompiliert -> schneller Start und Design entspricht der Laufzeit.

Hallo hum4n0id3,
von hum4n0id3 » 19. Nov 2022, 11:21
Wenn ich recht verstehe fehlt dir das entsprechende Qt->Gtk Theme, damit es unter Gtk wie Gtk aussieht. Wenn du adweita nutzt, brauchst qt-adweita oder wie es auch immer unter der jeweiligen Distribution heißt. Danach sollte es wie Gtk aussehen.
Hast Du dich da verschrieben und gemeint
damit es unter QT5 wie Gtk aussieht.
? Wenn ja, könnte das bedeuten, das ich lediglich ein anderes Theme einspielen muss, damit die QT5-Oberfläche wie bei Gtk2 aussieht?
Mit den Themen kenn ich mich nicht aus.
Wie spiel ich das auf? Ist das etwas, dass sich auf die Distribution bezieht oder nur auf Lazarus? Es würde mir natürlich sehr gefallen, wenn mein Programm aufgrund QT5 schnell startet, aber weiterhin wie unter Gtk2 aussieht.

Ich hab mich gerade mal schlau gemacht was adwaita ist. Ich verwende kein Gnome sondern LXQt, nur zur Info. Dann hab ich geschaut welche Pakete mit adwaita installiert sind mit:

Code: Alles auswählen

dpkg -l "*adwaita*" | grep ii
und bekam die Ausgabe:

Code: Alles auswählen

ii  adwaita-icon-theme      41.0-1ubuntu1 all          default icon theme of GNOME (small subset)
Ich hab danach mit aptitude gesucht welche adawait-Pakete vorhanden sind und nachinstalliert

Code: Alles auswählen

ii  adwaita-icon-theme      41.0-1ubuntu1  all          default icon theme of GNOME (small subset)
ii  adwaita-icon-theme-full 41.0-1ubuntu1  all          default icon theme of GNOME
ii  adwaita-qt:amd64        1.4.1-1        amd64        Qt 5 port of GNOME’s Adwaita theme
ii  libadwaita-1-0:amd64    1.1.0-1ubuntu2 amd64        Library with GTK widgets for mobile phones
ii  libadwaita-1-dev:amd64  1.1.0-1ubuntu2 amd64        Development files for libadwaita
ii  libadwaitaqt-dev:amd64  1.4.1-1        amd64        Qt 5 port of GNOME’s Adwaita theme — development files
ii  libadwaitaqt1:amd64     1.4.1-1        amd64        Qt 5 port of GNOME’s Adwaita theme — public library
ii  libadwaitaqtpriv1:amd64 1.4.1-1        amd64        Qt 5 port of GNOME’s Adwaita theme — private library
Dann hab ich mein Projekt und Lazarus clean kompiliert, hat aber keine Veränderung gezeigt.

War das deine Idee mit dem anderen Theme? Oder muss ich da was anderes machen?
MfG,
petwey

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

Warf
Beiträge: 1913
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:
Sa 19. Nov 2022, 20:11
Hast Du dich da verschrieben und gemeint
damit es unter QT5 wie Gtk aussieht.
? Wenn ja, könnte das bedeuten, das ich lediglich ein anderes Theme einspielen muss, damit die QT5-Oberfläche wie bei Gtk2 aussieht?
Mit den Themen kenn ich mich nicht aus.
Wie spiel ich das auf? Ist das etwas, dass sich auf die Distribution bezieht oder nur auf Lazarus? Es würde mir natürlich sehr gefallen, wenn mein Programm aufgrund QT5 schnell startet, aber weiterhin wie unter Gtk2 aussieht.
Grundsätzlich ist es sowohl bei QT als auch bei GTK so dass wie die Form aussieht nicht wirklich was mit dem unterliegenden Widgetset zu tun hat, sondern mit dem Konfigurierten Style des Anwenders. D.h. deine GTK Anwendung wird nicht bei jedem Nutzer so aussehen wie bei dir, sondern entsprechend dem vom Nutzer konfigurierten Stil.

Tatsächlich ist mittlerweile GTK 2 allerding EOL, d.h. es gibt einige Linux Distros bei denen es ganz anders aussehen wird. Z.B. benutze ich auf meinem OpenSuse sowohl für GTK als auch für QT das Breeze (dark) theme, somit sehen bei mir GTK und QT Anwendungen identisch aus. Ein kleines Problemchen ist nur das dadurch das GTK2 End of Life ist, viele Systeme keine GTK2 themes mehr mitbringen. Z.B. das standard Breeze theme was KDE mitbringt, gibt es nur in GTK3 und 4 aber nicht mehr für GTK2. Von daher musste ich, nur für Lazarus damit das wie der rest meines systems aussieht, mir ein Nutzererstelltes GTK 2 Breeze Darktheme installieren. Ich würde daher grundsätzlich empfehlen sowieso die Apps für QT5 zu bauen, da es einfach das Aktuellere ist und die Chancen gut stehen das es ins Design der Nutzer integriert.

Von daher ist es aber auch gar nicht so schlimm wenn deine Anwendung zur Designzeit anders aussieht als zur Laufzeit, denn bei jedem Benutzer wird sie so oder so anders aussehen. Damit ist das sogar ein ganz guter Test ob du deine Formulare Stilagnostisch gebaut hast, sodass sie immer gut aussehen.

Ich hab mal einen kleinen Screenshot angehängt wie es auf meinem System aussieht. Zugegeben, es ist nicht ganz perfekt, da der GTK2 stil nur eine Näherung ist die ein Nutzer irgendwann mal in seiner Freizeit gebaut hat, aber es ist "gut genug" damit es nicht auffällig raussticht
QTVsGTK.PNG
QTVsGTK.PNG (164.79 KiB) 1082 mal betrachtet
(Editor ist GTK, kompilierte version ist QT5)

Wie du das bei dir einstellst musst du schauen. LXQT ist als lightwight system (aka "Nur die hälfte der Features die man eigentlich braucht) leider sehr QT orientiert. Daher hat es glaube ich (im gegensatz zum KDE was ich benutze), keinen einfachen "GTK theme installieren" button. Du musst daher sehr wahrscheinlich die GTK themes per hand installieren. Das heist die Theme dateien nach ~/.themes kopieren und dann in der ~/.gtkrc-2.0 den Namen des Themes anpassen.

Persönlich kann ich das Breeze Theme empfehlen. Wenn man kein Fan vom Dark mode ist (siehe Screenshot), kann man auch die Light version davon nehmen. Gibts sowohl für QT als auch GTK

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

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

Beitrag von hum4n0id3 »

petwey hat geschrieben:
Sa 19. Nov 2022, 20:11
War das deine Idee mit dem anderen Theme? Oder muss ich da was anderes machen?
Das wirklich tolle an den Linux-Distributionen ist, das JEDER seine Suppe selbst und anders kochen darf. Yay! :mrgreen:

Ich weiß nicht welche Distribution du nutzt und Desktop. Wie warf schrieb, wird es bei jedem Nutzer anders aussehen. Du musst die Themes Angleichen. Auf openSuSE o. Fedora reichte es mir einfach das theme zu installieren. Vermutlich machen es Gnome und KDE dann automatisch.

Wenn LxQT Qt nutzt wird es wohl nur Qt-Themes einstellen. Mit lxAppearance (oder so ähnlich) kann man grafisch Gtk-Themes auswählen. Also nimmst du unter LxQT zum Beispiel Breeze und in lxAppereance dann das Gtk-Breeze. Das selbe dann halt für Adweita, wenn es nach Gtk aussehen soll.

Ich kenne LxQT halt nicht.

Benutzeravatar
theo
Beiträge: 10499
Registriert: Mo 11. Sep 2006, 19:01

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

Beitrag von theo »

hum4n0id3 hat geschrieben:
So 20. Nov 2022, 11:02
Ich kenne LxQT halt nicht.
Ich auch nicht. :roll:
Viele meinen immer, wenn irgendwo "schlank" oder "lightweight" drauf steht, sei es besonders einfach oder "schnell".
Das Gegenteil ist meistens Fall. Es ist unkomfortabel und mühsam.
Für einen normalen Computer mit mind. 4GB RAM, nehmt doch einfach OpenSUSE mit KDE und gut ist. Das ist so, wie früher ein Mercedes Benz war, nur dass es nichts kostet. :lol:
Wer gerne etwas Nervenkitzel hat, kann auch Tumbleweed nehmen. :wink:

petwey
Beiträge: 83
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 warf,

Danke für die Hinweise. Natürlich ist es nicht hinreichend die themes nur zu installieren, man muss sie auch einstellen / aktivieren.

Auf den Gedanken hast du mich gebracht. Danach hab ich nochmal genauer hingeschaut über das "Start"-Menü läßt sich unter Einstellungen/LXQT-Systemeinstellungen/Erscheinungsbild das Systemweite Erscheinungsbild der Oberflächen einstellen.

In meinem Programm sind verhältnismäßig viele Einstellungen sinngemäß auf einer Seite untergebracht und da stört es mich wenn Steuerelemente auf einmal unverhältnismäßig viel Platz beanspruchen. Ehrlich gesagt gefällt mir das nicht besonders, aber das ist geschmackssache.

Bei meinen Tests ist mir die Einstellung "Windows" als recht passend erschienen. Hier mal ein Vergleich zwischen Windows:
Window.jpg
Window.jpg (35.33 KiB) 1027 mal betrachtet
und HighContrast:
HighContrast.jpg
HighContrast.jpg (37.45 KiB) 1027 mal betrachtet
Hier der Dialog zum Einstellen der QT5-Stile:
Erscheinungsbild.jpg
Erscheinungsbild.jpg (32.84 KiB) 1027 mal betrachtet
Stilagnostisch bedeutet wohl soviel, dass man egal mit welchem Stil man arbeitet die Oberflächen bedienbar sind und gut aussehen.
Mal ganz ehrlich, wenn es derart grasse Unterschiede in den Stilen gibt, wie soll man denn sowas hinkriegen!
Gibt es dazu irgendwo Anleitungen?

Für mich wirft sich die Frage auf, ob man den Programmen nicht beibringen kann, das sie ihren eigenen Stil mitbringen und sich vom Stil der Umgebung nicht beeinflussen lassen.
MfG,
petwey

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

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

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

Beitrag von hum4n0id3 »

Gnome Projekt hat mal eine Initiative gestartet, wo gewünscht wird das Leute auf das Theming möglichst verzichten, weil das aus ihrer Sicht viele Nachteile mit sich bringt. Also das Customizen von Linux-Desktops habe ich schon vor einer Weile gelassen. Zum Glück ist Gnome mittlerweile nicht mehr die Katastrophe, wie es früher mal war.

Auch soll sich das Customizen unter Gtk4 nicht mehr so einfach bewerkstelligen, was einen Teil der Community stören soll, andere wiederum nicht. Ich persönlich begrüße diese Entscheidung. Die Themes sind auf der einen Seite zwar ganz nett, auf der anderen Seite funktioniert es aber nicht immer ordentlich. Selbst unter sehr guten Themen, ist es mir schon passiert das Bedienelemente verschwunden erschienen. Waren aber nicht wirklich verschwunden sondern im Einheitsbrei des Themes untergegangen.

Je mehr hier reguliert wird, desto besser. Bis heute hinterlässt der Linux-Desktop eher das Gefühl eines Spielzeugs. Erst so langsam mit Fedora habe ich das Gefühl, ein vollwertiges und erwachsenes Produkt zu bekommen. Viele andere Distributionen haben heute noch dieses „frickelige“, weil die gerne Features hinzufügen die im Original nicht zu finden ist, es von den Entwicklern eines Desktops so nicht vorgesehen war und natürlich das hinzugebastelte auch nicht fehlerfrei funktioniert.

Und dann wundern sich die Linux-Fan das ihr Betriebssystem kaum einer kennt oder nutzt.

petwey
Beiträge: 83
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 hum4n0id3,

danke für deine Antwort. Überhaupt habt alle Dank, die sich an der Diskussion beteiligt haben.
Das ist gutes Hintergrundwissen, aber ich möchte nochmal auf meine Kernfragen zurückkommen:

- 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 will nochmal auf meinen anderen Thread viewtopic.php?f=18&t=14549 verweisen:
- 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.

Ich will den Beitrag noch erweitern. Im Zweifelsfall mach ich einen neuen Thread auf.
Vielleicht ist fpgui ja eine vernünftige Lösung? Was gibt es dazu für Erfahrungen?
Zuletzt geändert von petwey am So 20. Nov 2022, 17:42, insgesamt 1-mal geändert.
MfG,
petwey

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

Antworten