如何设置窗口小部件以在Vala中拖动未修饰的窗口?

时间:2016-06-08 07:23:19

标签: user-interface gtk vala

这似乎是一个简单的问题。我是Gtk和Vala编程的初学者。我也是初学者程序员。我开始使用Vala Gtk GUI,现在我有一个不可拖动的未修饰窗口。 我需要设置一个自定义标题栏小部件来拖动窗口。我已经读过它是可行的并且在使用Python时看到了它,但不是Vala。

enter image description here

我想让Add和Close之间的区域可拖动 - 它是一个Gtk Horizo​​ntal box。

我需要帮助在Vala中实现它。请帮助。

先谢谢。

1 个答案:

答案 0 :(得分:2)

GTK +支持客户端装饰,这意味着您提供窗口装饰而不是窗口管理器。这是通过gtk_window_set_titlebar()完成的,它使用任意GtkWidget作为标题栏。

GTK +提供了GtkHeaderBar,一个完整的标题栏,您可以添加任意小部件(与GtkBox相同)。您可能已经看到许多GNOME程序已经使用它们。您的屏幕截图看起来像是GtkHeaderBar的作业,其中“添加”按钮打包到开头,“关闭”按钮打包到最后。只需将其设置为GtkWindow的标题栏,你应该好好去。 (您可能还需要删除标准的最小化/最大化/关闭按钮;还有GtkHeaderBar方法。)

当然,GtkHeaderBar默认看起来像标准的窗口管理器装饰。您可以使用CSS更改外观,甚至可以更改标题栏内的按钮外观(仅限)。您评论中的屏幕截图显示您已经完成了此操作;太棒了!