gtk3 - Gtk3 Vala 应用程序中的菜单按钮
问题描述
我正在尝试使用 vala 制作 Gtk3 应用程序。
我正在使用 ui 文件进行界面设计。我找不到有关如何使用 ui 文件执行此 GMenu(?) 的信息。在 vala 中有很多这样的编码示例。
如何在我的 ui 文件中添加此菜单按钮?
这是我的 ui 文件:
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<object class="GtkPopoverMenu" id="popovermenu1">
<property name="can_focus">False</property>
<child>
<placeholder />
</child>
</object>
<template class="ZeiterfassunggtkWindow" parent="GtkApplicationWindow">
<property name="default-width">600</property>
<property name="default-height">300</property>
<child type="titlebar">
<object class="GtkHeaderBar" id="header_bar">
<property name="visible">True</property>
<property name="show-close-button">True</property>
<property name="title">Zeiterfassung</property>
<property name="subtitle">Precisma GmbH</property>
<child>
<object class="GtkMenuButton">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="popover">popovermenu1</property>
<child>
<placeholder />
</child>
</object>
<packing>
<property name="pack_type">end</property>
</packing>
</child>
</object>
</child>
<child>
<object class="GtkLabel" id="label">
<property name="label">Hello, World!</property>
<property name="visible">True</property>
<attributes>
<attribute name="weight" value="bold"/>
<attribute name="scale" value="2"/>
</attributes>
</object>
</child>
</template>
</interface>
解决方案: 在 Jens 的帮助下找到了答案:
之后我不得不在模板底部添加一个图标 als GtkImage</template>
<object class="GtkImage" id="menu_image">
<property name="visible">True</property>
<property name="icon_name">open-menu-symbolic</property>
</object>
然后将此 GtkImage 用于 Button:
<object class="GtkMenuButton">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="popover">popovermenu1</property>
<property name="image">menu_image</property>
<child>
<placeholder />
</child>
</object>
解决方案
这是一个Gtk.MenuButton
with use_popover = True
,在这里查看 gedit 源代码:
https://gitlab.gnome.org/GNOME/gedit/blob/master/gedit/resources/ui/gedit-window.ui#L93
<object class="GtkMenuButton" id="gear_button">
<property name="visible">True</property>
<property name="valign">center</property>
<property name="use_popover">True</property>
<property name="image">menu_image</property>
</object>
<packing>
<property name="pack_type">end</property>
</packing>
另请注意,按钮位于Gtk.HeaderBar
组件内部。
推荐阅读
- javascript - 将 ArrayBuffer 作为 JSON 发送到 PHP 服务器
- node.js - 在节点 js 中使用 node-oracledb 将对象作为输入参数传递给存储过程
- jquery - CakePHP 3.x 用于 ajax 请求的 Flash 消息
- reactjs - React JS:找出组件是否在上下文提供者中
- jquery - jquery option select filter by other option select
- webgl - 具有两种纹理的立方体
- c++ - 具有非 POD 对象的 GLib 异步队列
- python - 是否可以将 .exe 文件转换为 .py?
- javascript - Ionic 3:播放 Icecast/Shoutcast 音频流
- ios - iOS - 表面检测