Erste Gehversuche mit GTK2

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Mathias
Beiträge: 6164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Erste Gehversuche mit GTK2

Beitrag von Mathias »

Warum machst du "erste Gehversuche" mit einem System, welches seit 12 Jahren zwei Nachfolger (3,4) hat?
Hast nicht du mir mal empfohlen, ich sollte mich mit gtk2 auseinandersetzen, da xlib sehr veralte ist, mit dem ich vorher bastelte ?
Auch Cairo wurde mir empfohlen.
GTK2 als von der LCL losgelöstes System ist seit 2011 generell "veraltet". In der LCL ist es als Multi-Platform-Layer mMn nach wie vor sinnvoll.
Ich verstehe nicht, was du meinst ?
Meinst du als Ergänzung zu LCL ?
"Erste Gehversuche" kannst du ja mit GTK4 machen.
GTK4 wird momentan nicht mal von Lazarus unterstützt.
Oder sind die GTK4 Units, welche du mal gebaut hast irgendwo öffentlich erhältlich ?
Ich verstehe deine Motivation manchmal einfach nicht.
Ich habe unterdessen recht interessante Dinge in GTK2 entdeckt. Mit den ganzen Containern von GTK2, kann man sehr interessante WidGet-Managements machen. Bei gewissen Sachen wird man da recht Mühe mit der LCL haben.
Oder gerade dies was ich vorher ausprobiert habe. Kann die LCL so ein formatiertes Label wie im Dialog im Anhang ?
Dies ist alles ein Label, ausgenommen die Buttons.
Dateianhänge
Bildschirmfoto vom 2023-02-19 17-23-51.png
Bildschirmfoto vom 2023-02-19 17-23-51.png (17.29 KiB) 1346 mal betrachtet
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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

Re: Erste Gehversuche mit GTK2

Beitrag von theo »

Mathias hat geschrieben:
So 19. Feb 2023, 17:35
Hast nicht du mir mal empfohlen, ich sollte mich mit gtk2 auseinandersetzen, da xlib sehr veralte ist, mit dem ich vorher bastelte ?
Auch Cairo wurde mir empfohlen.
Ich wüsste nicht, warum ich dir GTK2 hätte "empfehlen" sollen. Wo habe ich das geschrieben?
Empfehlen kann man nur etwas zu einem bestimmten Zweck hin und ich habe nach wie vor keine Ahnung, was du da machen willst.
Ich und z.B. Winni haben dir mehrfach erklärt, das X11 primär etwas ANDERES ist und nicht primär "veraltet".
Der X11-Konkurrent ist nicht GTK oder Qt sondern Wayland.

Aber du liest ja gar nicht was man dir antwortet und darum habe ich keine Lust mehr auf dieses Spiel.

Und statt GTK4 kannst du ja GTK3 nehmen, da liegen die Sourcen bei und das ist noch nicht "veraltet".

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

Re: Erste Gehversuche mit GTK2

Beitrag von hum4n0id3 »

@Mathias: Aller Achtung von mir das du soweit gekommen bist. Hut ab :)

Du scheinst dich mit C halbwegs auszukennen. Warum vollziehst du nicht Gtk 3 oder Gtk 4 nicht in C und wenn du mit dem Code vertraut bist, implementierst anschließend in Lazarus.

Sonst kämpfst du auf vielen Schlachtfeldern gleichzeitig und hast eher geringe Erfolgschancen.

Mathias
Beiträge: 6164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Erste Gehversuche mit GTK2

Beitrag von Mathias »

@Mathias: Aller Achtung von mir das du soweit gekommen bist. Hut ab :)
Danke
Du scheinst dich mit C halbwegs auszukennen. Warum vollziehst du nicht Gtk 3 oder Gtk 4 nicht in C und wenn du mit dem Code vertraut bist, implementierst anschließend in Lazarus.
Weil C einfach eine Katastrophe ist. Das ganze drum herum ist mit Pascal viel einfacher als C.
Wen man mal eine Unit hat, wie es bei OpenGL, cairo, gtk2 oder SDLx der Fall ist, ist man mit Pascal viel besser bedient.
Zeugs direkt in C probiere ich nur aus, wen es nicht anders geht.
Ich würde schon gtk4 in Pascal nehmen, wen es Units dafür gäbe, ich habe schon versucht C-Header mit h2pas zu übersetzen und bin meistens stecken geblieben.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Mathias
Beiträge: 6164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Erste Gehversuche mit GTK2

Beitrag von Mathias »

Ich habe unterdessen einiges mit GTK2 rumprobiert.
Ganz grob gesagt, das Widget-Management find ich recht toll. Was mich dabei recht fasziniert, wie es die Widget automatisch die Grösse anpasst. ZB. bei einem Button, wen man da einen langen Caption reinschreibt, wir der Button automatisch grösser. Bei der LCL wird dies einfach abgeschnitten. Oder noch extremer, wen die Caption mehrzeilig ist.
Das fällt einem meisten bei mehrsprachigen Anwendung auf, wen man die Sprache umstellt. Auch in der Lazarus-IDE findet man solche Bugs.

Was ich dafür bei GTK2 nicht so toll finde, Listboxen sind recht kompliziert, vor allem, wen es mehrspaltig wird. Dafür sind die Möglichkeiten extremer.

Unter dem Strich, GTK2 kann sehr viel was die Gestaltung von Dialogen anbelangt. Dafür ist die LCL in der Handhabung viel einfacher. Auch werden die EXE mit LCL viel grösser.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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

Re: Erste Gehversuche mit GTK2

Beitrag von hum4n0id3 »

Klingt super :)

Ich lerne Python mit PySide/PyQt und habe anfangs dieses Widget-System überhaupt nicht verstanden. Nach einigem Kotzen, weil HTML ist einfacher, hat es aber langsam Klick gemacht und jetzt verstehe ich sogar das Gtk3/4-Widget-System. Also so im groben. Mit Gtk habe noch nichts produktiv hin bekommen. Von Gtk# mit Visual Studio for Mac mal abgesehen.

Also vielleicht Bau ich doch irgendwann eine Gtk-Linux-App :lol:

Mathias
Beiträge: 6164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Erste Gehversuche mit GTK2

Beitrag von Mathias »

Was ich dafür bei GTK2 nicht so toll finde, Listboxen sind recht kompliziert, vor allem, wen es mehrspaltig wird. Dafür sind die Möglichkeiten extremer.
Ich habe unterdessen eine neue Liste gefunden "GtkCList", die ist um einiges einfacher in der Handhabung als die ich vorher hatte. Vorher hatte ich die "GtkTreeView" in den Fingern, welche recht viele Möglichkeiten hat. Die clist unterstützt, so wie es aussieht nur Text-Ausgabe.

Ich sehe schon, GTK ist eine sehr komplexe Sache, dafür hat man fast endlose Möglichkeiten.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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

Re: Erste Gehversuche mit GTK2

Beitrag von hum4n0id3 »

Ich glaube dafür endlich den Zusammenspiel zwischen QVBoxView, QHBoxView, QFormLayout und QGridLayout verstanden zu haben. Ich habe jetzt eine erste Anwendungsform für meine Arbeit im Qt-Designer zusammen gebaut, nach mehreren Versuchen. 3-Spaltig, die Elemente passen sich dem Fenster an und alles ist sieht gut aus. Vielleicht mache ich es mir noch zu schwer aber ich finde die Vorgehensweise in Qt echt umständlich.

Mathias
Beiträge: 6164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Erste Gehversuche mit GTK2

Beitrag von Mathias »

Vielleicht mache ich es mir noch zu schwer aber ich finde die Vorgehensweise in Qt echt umständlich.
Mit Qt habe ich mich noch nicht beschäftigt,
Ich kriege nicht mal in C ein Hello World hin. Anscheinend muss man da die dev zusammensuchen.

Ich habe rasch da rein geguckt, sieht vielversprechend aus: https://wiki.qt.io/Qt_for_Beginners
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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

Re: Erste Gehversuche mit GTK2

Beitrag von hum4n0id3 »

Ich glaube Qt ist eher mit C++ nutzbar statt mit C. Oder eben Python.

Gestern Nacht also erstes "aufwendige" Gtk Fenster mit Glade gebaut. Laut Experten sollte man das zwar von Hand schreiben, aber mir ging es eher darum zu sehen, ob die Gtk ähnlich wie Qt arbeitet. Wie ich es laut Doku verstehe, ja. Widget-System usw ...

Also GtkMainWindow als Toplevel ausgewählt und anschließend eine GtkBox ausgewählt. Wie es genau heißt, kann nicht sagen, da vom Smartphone aus schreibe. Man bekommt 3 Horizontale Felder. In das oberste das GtkMenu geschoben und es hat sofort die korrekte Form angenommen. Bei Status ebenfalls.

In das freie Feld in der Mitte stellte ich eine weitere GtkBox hin und habe die Vertikal ausgerichtet. Jetzt hatte ich ein 3 Spaltiges Layout :lol:

So weit war ich im Gtk noch nie. Und ich habe wirklich Tage gebraucht um das Layout-Design von Qt zu verstehen, da es nicht sofort ersichtlich ist und viele Menschen zunächst hier stolpern.

Ich bin zunächst zufrieden.

Mathias
Beiträge: 6164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Erste Gehversuche mit GTK2

Beitrag von Mathias »

So weit war ich im Gtk noch nie.
Aber wen man das Layout System mal begreift, ist es echt genial. Man muss einfach wissen wie das mit den Containern funktioniert. Auch die Kombination ist wichtig, Zb. von der hbox und vbox.
Und ich habe wirklich Tage gebraucht um das Layout-Design von Qt zu verstehen, da es nicht sofort ersichtlich ist und viele Menschen zunächst hier stolpern.
Wie gesagt, mit QT habe ich mich noch nicht beschäftigt.
Aber in Lazarus muss auch etwas davon vorhanden sein, es hat jenste Ordner mit "Qt".
Gestern Nacht also erstes "aufwendige" Gtk Fenster mit Glade gebaut
Ich habe gerade nach "lade" gegoogelt, sieht so aus wie dies am sterben ist.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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

Re: Erste Gehversuche mit GTK2

Beitrag von hum4n0id3 »

Mathias hat geschrieben:
Di 11. Apr 2023, 09:30
Und ich habe wirklich Tage gebraucht um das Layout-Design von Qt zu verstehen, da es nicht sofort ersichtlich ist und viele Menschen zunächst hier stolpern.
Wie gesagt, mit QT habe ich mich noch nicht beschäftigt.
Ich auch nicht. Beruflich war ich bis vor kurzem PHP-Webentwickler mit guten 8-10 Jahren HTML-"View" Erfahrung. Das komlipzierteste was ich hier fand war Bootstrap mit seinem Grid-Layout,

Code: Alles auswählen

<div class="container text-center">
  <div class="row">
    <div class="col">
      Column
    </div>
    <div class="col">
      Column
    </div>
    <div class="col">
      Column
    </div>
  </div>
</div>
,
https://getbootstrap.com/docs/5.2/layout/grid/

Also nicht wirklich aufwändig. Das etwas wenige von WinForms, war aber auch nie herausfordernd. Ich fand nur HTML+CSS halt immer schöner. Man setzt sich irgendwann darauf fest und verlernt andere Ansichten. Deshalb habe ich an Qt auch lange gesesen und verschiedene Tutorien versucht, bis es einigermaßen wieder geklickt hat. Wer das System kennt, wird sich natürlich sofort zurecht finden.
Mathias hat geschrieben:
Di 11. Apr 2023, 09:30
Ich habe gerade nach "lade" gegoogelt, sieht so aus wie dies am sterben ist.
Ich habe es im laufe meiner "Gtk-Studien" irgendwo mal rausgelesen, das man Glade nicht nutzen sollte. Daher denke ich auch das es am Sterben ist. Ich habe es mir in einer VM mit Linux installiert um nachzuvollziehen ob es nun genauso, oder zumindest ähnlich arbeitet wie das System/Prinzip von Qt.

Mathias
Beiträge: 6164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Erste Gehversuche mit GTK2

Beitrag von Mathias »

Mit Qt habe ich mich noch nicht beschäftigt,
Ich konnte es nicht lassen und habe trotzdem mal ein Hello World probiert:

Code: Alles auswählen

#include <QApplication>
#include <QPushButton>
#include <QComboBox>
#include <QBoxLayout>
#include <QtWidgets>

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);

    QWidget w;
    QVBoxLayout l(&w);

    QPushButton button ("Hallo Welt !\nHello World !");

    QComboBox cb;     
    cb.addItem("item1");
    cb.addItem("item2");
    cb.addItem("item3");
    cb.addItem("item4");
    cb.addItem("item5");

    l.addWidget(&cb);
    l.addWidget(&button);

    w.show();
    return a.exec(); }
Der Code sieht recht einfach aus, fas wie LCL.

Das kompilieren sieht dafür sehr kompliziert aus, wen man weis wie, kann man hier sicher einiges rausschmeissen.

Code: Alles auswählen

g++ -c -pipe -O2 -Wall -Wextra -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I. -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o main.o main.cpp
g++ -Wl,-O1 -o helloworld main.o   /usr/lib/x86_64-linux-gnu/libQt5Widgets.so /usr/lib/x86_64-linux-gnu/libQt5Gui.so /usr/lib/x86_64-linux-gnu/libQt5Core.so -lGL -lpthread 
Diese Package ist Voraussetzung, das alle Bibliotheken das sind.

Code: Alles auswählen

sudo apt install qtbase5-dev
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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

Re: Erste Gehversuche mit GTK2

Beitrag von hum4n0id3 »

Genau. QWidget ist ein einfaches Fenster. Willst eine Statusbar Toolbar und Menü haben, nimmst du QMainWindow. Hast du kompliziertes Fenster, packst du in das QMainWindow das QWidget rein und darauf dann eben die QVBoxView oder QHBoxView oder Form oder GridView rein. Dann das Layout ausrichten und das wars.

Im Fall von Python muss man nur die Datei mit der Main-Funktion aufrufen. Aber vielleicht versuche ich auch mal C++ 😃

Mathias
Beiträge: 6164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Erste Gehversuche mit GTK2

Beitrag von Mathias »

Genau. QWidget ist ein einfaches Fenster. Willst eine Statusbar Toolbar und Menü haben, nimmst du QMainWindow. Hast du kompliziertes Fenster, packst du in das QMainWindow das QWidget rein und darauf dann eben die QVBoxView oder QHBoxView oder Form oder GridView rein. Dann das Layout ausrichten und das wars.
Im Grunde das Gleiche wie bei GTK, einfach der Dialekt ist anders. QT und LCL habe viele Ähnlichkeiten. GTK ähnelt eher den alten Toolkit Athena und Motif.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten