更改GtkBuilder生成的菜单栏中的GtkMenuItem标签
我使用以下XML代码通过GtkBuilder生成GtkMenuBar:更改GtkBuilder生成的菜单栏中的GtkMenuItem标签,gtk,gtk3,gtkbuilder,Gtk,Gtk3,Gtkbuilder,我使用以下XML代码通过GtkBuilder生成GtkMenuBar: <?xml version="1.0"?> <interface> <menu id="menubar"> <submenu id="submenu"> <attribute name="label">test</attribute> <section> <item>
<?xml version="1.0"?>
<interface>
<menu id="menubar">
<submenu id="submenu">
<attribute name="label">test</attribute>
<section>
<item>
<attribute name="label">random item</attribute>
</item>
</section>
</submenu>
</menu>
</interface>
但是,我需要在运行时更改此菜单项的标签,并希望以上述方式进行更改。这是一个简单的菜单栏,有一个菜单项(_文件),一个子菜单有3个菜单项(2x ImageMenuItem和一个SeparatorMenuItem)。以下是使用Glade 3.19(Fedora 23)完成的,在解析您的文件后,Glade抱怨它是Gtk+2.12的目标,即使该文件上没有版本参考。正如您所看到的,语法不同
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.19.0 -->
<interface>
<requires lib="gtk+" version="3.16"/>
<object class="GtkMenuBar" id="menubar1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkMenuItem" id="menuitem1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">_File</property>
<property name="use_underline">True</property>
<child type="submenu">
<object class="GtkMenu" id="menu1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkImageMenuItem" id="imagemenuitem1">
<property name="label">gtk-new</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
</object>
</child>
<child>
<object class="GtkSeparatorMenuItem" id="separatormenuitem1">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
<child>
<object class="GtkImageMenuItem" id="imagemenuitem2">
<property name="label">gtk-quit</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</interface>
真的
假的
真的
假的
_文件
真的
真的
假的
gtk新
真的
假的
真的
真的
真的
假的
gtk退出
真的
假的
真的
真的
你能告诉我更多关于你的设置和依赖关系吗?无论如何,建议升级到Gtk+3 这是一个简单的菜单栏,有一个菜单项(_文件),一个子菜单有3个菜单项(2x ImageMenuItem和一个SeparatorMenuItem)。以下是使用Glade 3.19(Fedora 23)完成的,在解析您的文件后,Glade抱怨它是Gtk+2.12的目标,即使该文件上没有版本参考。正如您所看到的,语法不同
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.19.0 -->
<interface>
<requires lib="gtk+" version="3.16"/>
<object class="GtkMenuBar" id="menubar1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkMenuItem" id="menuitem1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">_File</property>
<property name="use_underline">True</property>
<child type="submenu">
<object class="GtkMenu" id="menu1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkImageMenuItem" id="imagemenuitem1">
<property name="label">gtk-new</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
</object>
</child>
<child>
<object class="GtkSeparatorMenuItem" id="separatormenuitem1">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
<child>
<object class="GtkImageMenuItem" id="imagemenuitem2">
<property name="label">gtk-quit</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</interface>
真的
假的
真的
假的
_文件
真的
真的
假的
gtk新
真的
假的
真的
真的
真的
假的
gtk退出
真的
假的
真的
真的
你能告诉我更多关于你的设置和依赖关系吗?无论如何,建议升级到Gtk+3 您是使用Glade还是手工编写XML?您是使用Glade还是手工编写XML?