我正在开发与GTK和林地的应用程序。我的印象是,这是常见的做法是创建的GtkWindow的子类,你的主窗口,但我卡在我将如何构建我的子类从GtkBuilder定义。有谁知道怎么样?

有帮助吗?

解决方案

子类GtkWindow是GTK的各种语言绑定更普遍比在平原C.你没有提到你正在使用的语言。

这就是说,这样我的子类用C GtkWindow是在Glade的创建窗口的内容,但的窗口本身。格莱德3(IIRC),你可以在调色板中的控件右击并选择“小工具添加为顶层”放置非顶层窗口小部件无容器。

GtkWindow的子类,然后编写代码,让我们称之为MyAppWindow。因为有大量的GObject的文档中的例子,我不会进入,在这个答案。在初始化函数(my_app_window_init())加载格莱德文件,使用gtk_builder_get_object()获得一个指向该文件格莱德最外面的小部件,并使用gtk_container_add()将它添加到您的构建窗口。然后使用gtk_builder_connect_signals()象通常那样。

您必须这样手动设置所有窗口的属性,因为你不能在格莱德做到这一点,但除此之外,我发现它工作得很好。

其他提示

它不是通常的做法是子类的GtkWindow。

我不认为它是可以从gtkbuilder定义创建子类顶层窗口。

gtkbuilder需要了解,然后才能创建子类的小工具。

如果你真的想创建自己的GtkWindow ptomato的子类描述也基本步骤。也可以创建插件空地,让您的自定义小部件可用。但是,这并不是很容易,而且很可能不是你想要做什么。

大多数应用程序只使用标准窗口小部件不继承其中任何一个。然后加载与gtkbuilder(或libglade的)一块空地文件,你并不需要为您的GUI一类特殊的(如在一些其他RAD工具),而不是你只会得到一组对象。该API可以让你看看他们的名字(和窗口基本上只是其中之一)。一种常见的方法是查找您要进行交互的所有部件,并将它们存储在全局变量时,程序启动。或者,如果你需要窗口的多个实例,您可以创建一个结构来存储它们。或者您也可以简单的查找每次需要的时候小部件。请注意,您获得的一组对象是完全动态的。例如,您可以移动,就像您创建的GUI程序的不同窗口之间的小部件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top