我正在尝试在vala中创建我的第一个应用程序。我用一个标题栏在林间空地做了一个ui,现在我想让标题栏显示窗口控件。我搜索了如何使用vala设置gtk属性,但无法找到答案。我可以找到我需要设置的属性,但不能找到如何在vala中设置它。我现在在vala中的主要应用程序的当前代码是:
using Gtk;
public static int main(string[] args){
Gtk.init (ref args);
try{
var builder = new Builder();
builder.add_from_file ("Headerbar.ui");
builder.connect_signals (null);
var window = builder.get_object ("main_window") as Window;
var headerbar = builder.get_object ("headerbar") as Gtk.HeaderBar;
headerbar.set_show_close_button(true);
window.show_all ();
Gtk.main ();
} catch (Error e){
stderr.printf ("Kon ui niet laden: %s\n", e.message);
return 1;
}
return 0;
}
我的ui文件的代码是:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.20.0 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkApplicationWindow" id="main_window">
<property name="can_focus">False</property>
<child>
<object class="GtkLabel" id="label">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
<child type="titlebar">
<object class="GtkHeaderBar">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkButton" id="sayhello">
<property name="label" translatable="yes">Say hello! </property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
</child>
</object>
</child>
当我编译代码时,它不会给出任何错误。但是当我运行应用程序时,窗口控件没有显示在标题栏中,我在终端中收到以下错误: (主要:15420):Gtk-CRITICAL **:gtk_header_bar_set_show_close_button:断言&#39; GTK_IS_HEADER_BAR(bar)&#39;失败。 如何正确设置属性,以便标题栏显示窗口控件。