2016-06-08 20 views
2

Das mag wie eine einfache Frage erscheinen. Ich bin ein Anfänger in Gtk und Vala Programming. Ich bin auch ein Anfänger Programmierer. Ich begann mit Vala Gtk GUI und jetzt habe ich ein undekoriertes Fenster, das nicht ziehbar ist. Ich muss ein benutzerdefiniertes Titelleisten-ähnliches Widget festlegen, um das Fenster zu ziehen. Ich habe gelesen, dass es machbar ist und es in Aktion mit Python, aber nicht mit Vala gesehen hat.Wie setze ich ein Widget, um ein undekoriertes Fenster in Vala zu ziehen?

enter image description here

Ich möchte den Bereich zwischen Hinzufügen und schließen ziehbar machen - es ist ein Gtk Horizontal-Box ist.

Ich brauche Hilfe bei der Umsetzung in Vala. Bitte Hilfe.

Vielen Dank im Voraus.

+0

Ich glaube nicht, dass es in Gtk + eine eingebaute Methode dafür gibt, da dies eine Aufgabe für den Fenstermanager ist. Warum möchten Sie überhaupt keine Fensterdekoration haben? –

+0

Wenn Sie dies wirklich wollen und nur X11 (nicht Wayland, Windows, etc.) unterstützen, können Sie [die X11 API aufrufen] (https://github.com/patrickhaller/no-wm/blob/master/x- move-resize.c) aus Ihrer Anwendung. –

+0

Es ist nur für die ästhetische Schönheit, die das Programm mit der Titelleiste entfernt haben wird. Es ist im Grunde nur ein stickynotes Widget, es wird nicht wirklich eine Titelleiste brauchen. Also ich dachte, es sieht besser ohne Dekorationen aus, also sei es – Annu

Antwort

2

GTK + unterstützt clientseitige Dekorationen, was bedeutet, dass Sie die Fensterdekoration anstelle des Fenstermanagers bereitstellen. Dies geschieht mit gtk_window_set_titlebar(), die ein beliebiges GtkWidget als Titelleiste verwendet.

GTK + bietet GtkHeaderBar, eine vollständige Titelleiste, der Sie beliebige Widgets hinzufügen können (auf die gleiche Weise wie GtkBox). Möglicherweise haben Sie gesehen, dass viele GNOME-Programme sie bereits verwenden. Ihr Screenshot sieht wie ein Job für GtkHeaderBar aus, mit der Schaltfläche "Add" am Anfang und der Schaltfläche "Close" am Ende. Stell das einfach als Titelleiste des GtkWindows ein und du solltest gut gehen. (Sie müssen möglicherweise auch die standardmäßigen Schaltflächen zum Minimieren/Maximieren/Schließen entfernen; dafür gibt es auch eine GtkHeaderBar-Methode.)

Natürlich sieht GtkHeaderBar standardmäßig wie Standard-Fenstermanager-Dekorationen aus. Sie können CSS verwenden, um die Darstellung zu ändern, bis hin zur Änderung der Darstellung der Schaltflächen in der Kopfleiste (nur). Ihre Screenshots in Ihren Kommentaren zeigen, dass Sie dies bereits getan haben. gut gemacht!