Ja, genau. Das versuchte ich auch zu schreiben. Jemand der sich damit schon auseinander gesetzt hat, wird das auf Anhieb verstehen. Jemand der damit noch nie gearbeitet hat, hat erstmal seine schwierigkeiten. Obwohl ich kein C++ kann, konnte ich mit deinem Beispiel sofort etwas anfangen, weil es in Python im Prinzip ähnlich ist. Auch die Doku von Gtk verstehe ich nun viel besser, weil ich jetzt eine Vorstellung davon habe, was da passiert und gemacht werden muss. Sie funktionieren eben ähnlich.Mathias hat geschrieben: Do 13. Apr 2023, 09:12Im 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.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.
Erste Gehversuche mit GTK2
Re: Erste Gehversuche mit GTK2
-
- Beiträge: 6899
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Erste Gehversuche mit GTK2
Das ist so, wen man mal weis, was Container sind, ist das coden einiges ringer.Jemand der sich damit schon auseinander gesetzt hat, wird das auf Anhieb verstehen.
Ich habe noch ein bisschen mit qt gespielt. Was dort nocht geht, eine HBox in eine VBox reinzupacken. Anscheinend gibt es da eine andere Lösung als bei GTK.
Und jetzt konnte ich es nicht lassen, es mal kurz mit Lazarus auszuprobieren. Dabei habe ich etwas gemogelt, ich habe eine LCL, Anwendung gebaut, und dort den Widget-Satz auf QT5 umgestellt. Er da hatte ich die Unit qt5 zur Verfügung. Dies sieht dann so aus.
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var
window: QWidgetH;
button: QPushButtonH;
layout: QHBoxLayoutH;
var
s: WideString;
i: integer;
begin
window := QWidget_Create();
layout := QHBoxLayout_Create(window);
for i := 0 to 7 do begin
s := 'Button ' + IntToStr(i);
button := QPushButton_Create(@s);
QBoxLayout_addWidget(layout, button);
end;
QWidget_show(window);
end;
Ist es mit FPC nicht möglich, das die Anbindung an QT5 so merkwürdig gelöst ist.
Was mit noch aufgefallen ist, ist musste eine spezielle lib installieren:
Code: Alles auswählen
apt install libqt5pas-dev
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 945
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: Erste Gehversuche mit GTK2
Weil du eben nicht von Pascal aus auf C++ Code zugreifen kannst (zumindest nicht mit FPC; in Delphi geht das, wenn für C++ der C++ Builder genutzt wird, da beide Compiler kompatible ABIs haben). Es braucht eine Bibliothek, welche die C++ API als C API bereitstellt, was eben die libqt5pas (oder libqt4pas) macht.Mathias hat geschrieben: Fr 14. Apr 2023, 22:01 Was dabei merkwürdig ist, das sieht ganz anders aus, als QT5 mit C++. Dies sieht eher aus wie bei GTK.
Ist es mit FPC nicht möglich, das die Anbindung an QT5 so merkwürdig gelöst ist.
Was mit noch aufgefallen ist, ist musste eine spezielle lib installieren:Und Lazarus greift dann mit der Unit QT5 dann aus diese Lib zu.Code: Alles auswählen
apt install libqt5pas-dev
FPC Compiler Entwickler
-
- Beiträge: 6899
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Erste Gehversuche mit GTK2
Habe ich dies richtig verstanden. ?Weil du eben nicht von Pascal aus auf C++ Code zugreifen kannst (zumindest nicht mit FPC; in Delphi geht das, wenn für C++ der C++ Builder genutzt wird, da beide Compiler kompatible ABIs haben)
Mit FPC kann man nur auf Libs zugreifen, welch in C geschrieben sind ?
Libs, welche in C++ geschrieben sind, guckt man mit FPC in die Röhre ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Erste Gehversuche mit GTK2
Du bist doch jetzt auch schon 9 Jahre dabei?
Das kann man alles seit Ewigkeiten wissen.
https://downloads.freepascal.org/fpc/do ... Pascal.pdf
Das kann man alles seit Ewigkeiten wissen.
https://downloads.freepascal.org/fpc/do ... Pascal.pdf
Re: Erste Gehversuche mit GTK2
Cool! Danke für den Linktheo hat geschrieben: Sa 15. Apr 2023, 18:59 Du bist doch jetzt auch schon 9 Jahre dabei?
Das kann man alles seit Ewigkeiten wissen.
https://downloads.freepascal.org/fpc/do ... Pascal.pdf

-
- Beiträge: 6899
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Erste Gehversuche mit GTK2
Wen ich so im PDF lese, braucht man eine Brücke zwischen der C++-Lib und Pascal ?theo hat geschrieben: Sa 15. Apr 2023, 18:59 Du bist doch jetzt auch schon 9 Jahre dabei?
Das kann man alles seit Ewigkeiten wissen.
https://downloads.freepascal.org/fpc/do ... Pascal.pdf
Und diese Brücke muss auch in C++ geschrieben sein ?
Wen ich den Pascal-Button von gt5 angucke, sieht man dies gut.
https://github.com/davidbannon/libqt5pa ... tton_c.cpp
Schade, das dies nicht direkt geht, Pascal und C++ unterstützen Objektorientierung.
Und wen ich mit "object" von Pascal angucke, ist dies sehr ähnlich mit den C++ "class".
Nicht verwechseln mit LCL und Delphi "class", dies sind anders aufgebaut.
Hier steht noch etwas, https://www.freepascal.org/future.var , das da noch was in Planung ist, was C++ anbelangt.
So nebenbei hat es da noch andere interessante Sachen in Planung.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 945
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: Erste Gehversuche mit GTK2
Das ist nur eine oberflächliche Ähnlichkeit. Der Teufel steckt im Detail, was auch der Grund ist, warum cppclass nicht wirklich über experimentelle Funktionalitäten hinaus gekommen ist.Mathias hat geschrieben: So 16. Apr 2023, 13:33 Und wen ich mit "object" von Pascal angucke, ist dies sehr ähnlich mit den C++ "class".
FPC Compiler Entwickler
-
- Beiträge: 6899
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Erste Gehversuche mit GTK2
Bit GTK2 kann man noch recht lustige Spielerreien machen. Zum ausprobieren hier: https://github.com/sechshelme/Lazarus-G ... tton_Label
Ich sehe schon, mit GTK kann man sich recht lange beschäftigen, die Möglichkeiten sehen endlos aus.
Und ich denke, bei GTK4 wird es noch viel extremer ?
Ich sehe schon, mit GTK kann man sich recht lange beschäftigen, die Möglichkeiten sehen endlos aus.
Und ich denke, bei GTK4 wird es noch viel extremer ?
Sowas habe ich fast vermutet, ansonsten wäre QT sicher anders verwendet worden und nicht über den Umweg von libqtpas.Das ist nur eine oberflächliche Ähnlichkeit. Der Teufel steckt im Detail, was auch der Grund ist, warum cppclass nicht wirklich über experimentelle Funktionalitäten hinaus gekommen ist.
- Dateianhänge
-
- Bildschirmfoto vom 2023-04-18 15-45-55.png (27.83 KiB) 5063 mal betrachtet
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 6899
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Erste Gehversuche mit GTK2
Ich habe folgendes Miniprogramm mit 2 Dialogen erzeugt. Der einte Dialog ist eine Fontauswahl, und der andere für die Schrift.
Nun das Problem.
Der Color Dialog verhält sie wie wen man in der LCL ein Form mit ShowModal aufruft, somit somit ist keine aktion mehr auf die anderen Fenster möglich.
Beim Font Dialog ist wie Show, wobei da es sogar möglich ist diesen Dialog mehrmals aufzurufen.
Was mache ich falsch, das die Dialoge sich unterschiedlich verhalten ?
Die beiden Funktionen sehen fast gleich aus.
Im Anhang noch der ganze Code.
Nun das Problem.
Der Color Dialog verhält sie wie wen man in der LCL ein Form mit ShowModal aufruft, somit somit ist keine aktion mehr auf die anderen Fenster möglich.
Beim Font Dialog ist wie Show, wobei da es sogar möglich ist diesen Dialog mehrmals aufzurufen.
Was mache ich falsch, das die Dialoge sich unterschiedlich verhalten ?
Die beiden Funktionen sehen fast gleich aus.
Code: Alles auswählen
procedure select_Color(widget: PGtkWidget; lab: gpointer); cdecl;
var
dialog: PGtkWidget;
begin
dialog := gtk_color_selection_dialog_new('Select Color');
gtk_dialog_run(GTK_DIALOG(dialog));
gtk_widget_destroy(dialog);
end;
procedure select_Font(widget: PGtkWidget; lab: gpointer); cdecl;
var
dialog: PGtkWidget;
begin
dialog := gtk_font_selection_dialog_new('Select Font');
gtk_dialog_run(GTK_DIALOG(dialog));
gtk_widget_destroy(dialog);
end;
- Dateianhänge
-
30-FontSelectionDialog_2.zip
- (1.68 KiB) 91-mal heruntergeladen
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Erste Gehversuche mit GTK2
Bei mir verhalten sich beide Dialoge gleich.
GTK 2.24.33
Betriebssystem: openSUSE Leap 15.4
KDE-Plasma-Version: 5.24.4
KDE-Frameworks-Version: 5.90.0
GTK 2.24.33
Betriebssystem: openSUSE Leap 15.4
KDE-Plasma-Version: 5.24.4
KDE-Frameworks-Version: 5.90.0
-
- Beiträge: 6899
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Erste Gehversuche mit GTK2
Ich habe folgendes:
Dies wäre die gleiche Version wie bei dir.
Ich habe es noch auf dem Laptop mit der gleichen Mint-Version getestet. Dort verhalten sich beide ShowModal.
Somit muss auf meinem PC ein Bug vorliegen.
Könnte evtl. dies mir GTK4 zusammen hängen, welches ich direkt vom Git-Server habe ?
Nur soviel ich weis, sollte doch GTK2 unabhängig von GTK4 sein ?
Code: Alles auswählen
WriteLn('GTK+ version: ', gtk_major_version, '.', gtk_minor_version, '.', gtk_micro_version); // -> GTK+ version: 2.24.33
Ich habe es noch auf dem Laptop mit der gleichen Mint-Version getestet. Dort verhalten sich beide ShowModal.
Somit muss auf meinem PC ein Bug vorliegen.
Könnte evtl. dies mir GTK4 zusammen hängen, welches ich direkt vom Git-Server habe ?
Nur soviel ich weis, sollte doch GTK2 unabhängig von GTK4 sein ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Erste Gehversuche mit GTK2
Selbst wenn - oder auch falls der Fenstermanager noch mitredet - ergibt es keinen Sinn, dass sich die beiden Dialoge in der gleichen Anwendung unterschiedlich verhalten.
Ich kann das wie gesagt auch nicht bestätigen/nachvollziehen.
Dazu fällt mir weiter nichts ein.
Ich kann das wie gesagt auch nicht bestätigen/nachvollziehen.
Dazu fällt mir weiter nichts ein.
-
- Beiträge: 6899
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Erste Gehversuche mit GTK2
Kennt einer eine typische GTK2 Anwendung, welche die Color und Font Dialoge verwenden ?Bei mir verhalten sich beide Dialoge gleich.
GTK 2.24.33
Wen dort das Problem auch zum Vorschein kommt, dann ist klar, das meine GTK2 Lib ein Problem hat.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 6899
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Erste Gehversuche mit GTK2
Diese Problem hat sich bei mir gelöst, als ich mal in der Zwischenzeit Linux neu installierte.Kennt einer eine typische GTK2 Anwendung, welche die Color und Font Dialoge verwenden ?
Wen dort das Problem auch zum Vorschein kommt, dann ist klar, das meine GTK2 Lib ein Problem hat.
Aber etwas anderes erstaunt mich viel mehr. Bei der LCL wird in der Regel im Hintergrund auf GTK2 zugegriffen, sicher bei Linux der Fall.
Mir ist da im Forum vielfach aufgefallen, das viele Coder Probleme haben, das zB. eine Caption von eine Komponente über den Rand aus geht und abgeschnitten wird. Vor allem wen verschiedene Skalierungen des Desktops vorkommen.
Bei normaler Anwendung von GTK2 ist das Management der Komponenten genial gelöst die Grösse wird immer so angepasst, das die Caption immer schön rein passt. Man kann auch die Dialoge nur soweit verkleinern, so das noch aller Text sichtbar ist. Siehe mein Beispiel weiter oben mit den verdrehten Schriften, alles ist sichtbar.
Wieso wird sowas nicht bei der Gestaltung bei der LCL perfekt integriert. Es hat da schon ein Autosize, aus so perfekt wie bei nativen GTK ist es nicht.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot