问题标签 [gtk4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
74 浏览

c - 尽管拥有所有必需的软件包,但无法在 Fedora 上使用 Hello World 示例编译 GTK4

我已阅读我使用的 GTK for GTK4 的安装说明

Hello, World 示例的代码是

我使用了 GCC 的编译功能:

但是这个错误呈现

如我所见,我应该安装了所有必需的软件包,但我不确定为什么编译器无法提取 gtk 库。任何帮助都是极好的。

0 投票
0 回答
40 浏览

gtk3 - Gtk4:菜单项和 Pango 标记

提前感谢您阅读我,我正在将 Gtk3 应用程序迁移到 Gtk4。在我的应用程序中,一些菜单项标签使用 pango 标记标签:

现在使用新的 API,我使用以下代码,而不是一个无论如何都不能包含 Pango 标记的 XML 文件:

是否有一个属性可以传递给菜单项,或者是使用“自定义”属性插入小部件的唯一方法?

在此先感谢您的帮助。

此致。

S。

0 投票
0 回答
50 浏览

gtk - 将 GEGL 与 GTK 4 一起使用,以获得具有平移/缩放支持的简单图像查看器

我需要一个支持平移/缩放的简单图像小部件,但不幸的是,GTK 似乎仍然不提供。我已经设法通过使用 ScrolledWindow 和由 PixBuf 支持的 Picture(通过按需缩放 PixBuf 和 EventControllerMotion 来模拟平移)来实现类似的东西,但不用说这种方法对于在触摸板上平滑缩放和使用来说太慢了由于没有平铺,内存量非常大。

一种建议的方法似乎是使用 GEGL,但应该如何做到这一点并不明显。似乎有用于以前版本的 GTK(gegl-gtk 和 gegl-gtk3)的辅助库,但我不知道应该如何将它与 GTK 4 应用程序一起使用。老实说,这些文件几乎不存在。

因此,我将欣赏一些关于 GTK (4) 应用程序中 GEGL 基本用法的示例/解释,或者是否有更好的方法。

0 投票
0 回答
65 浏览

combobox - 如何使用 GTK4 使可滚动组合框可滚动?

我正在尝试制作一个包含很多项目的组合框。由于它的长度,它会碰到屏幕的底部。以下是当它到达屏幕底部时发生的情况的示例:

GTK4中的组合框,它不允许滚动

组合框中有 80 个项目,但它只能显示这 5 个项目,其中第 5 个被略微截断,因为没有可以允许滚动选项的垂直滚动条。

在 UI 文件中,我有:

在使用 Glade 进行了一些测试后,我发现 GTK3 的组合框将允许在组合框到达屏幕底部时滚动(此处由向下箭头指示):

gtk3中使用glade的组合框

如何使组合框可滚动?是否有替代方案,或者我应该将我的代码转换为使用 GTK3,因为它确实有可滚动的组合框?

0 投票
0 回答
80 浏览

gtk4 - 填充父级的 GTK4 图像

我正在尝试创建一个图像,该图像在两个维度上填充其父小部件,同时保持纵横比。在 gtk4-rs 我做了

但这仅填充了父级的一个维度。但是,我想溢出该维度中的父级,以便填充两个维度。

一般来说,我认为我的目标可以通过child.set_size_request(parent_width, parent_height). 每次父大小更改时都需要这样做。

想法1:听size_allocate父母的信号。不起作用,因为size_allocate信号已被删除:https ://docs.gtk.org/gtk4/migrating-3to4.html#adapt-to-gtkwidgets-size-allocation-changes

想法 2:子类化Picture并在allocate(). 但Picture显然不可子类化。编译器告诉我

类型 ParentType = gtk::图片;=> 特征IsSubclassable<FillingPicture>未实现Picture

想法 3:子类化WidgetPicture在内部使用(来自https://github.com/gtk-rs/gtk4-rs/issues/393)。我不知道如何将所有函数调用链接在一起,以便Picture实际显示。(这样做也感觉不对。如果这很容易实现,Picture那么可能是子类化的吗?)

Picture想法 4:从头开始重新实现整个类。似乎只是为了简单的调整大小而过度杀伤和过多的维护开销。

想法5:使用CSS属性填充父级。我尝试将widthand设置height为 100%,但显然不允许使用相对大小。cover也不支持 CSS 属性。

想法 6:放弃 GTK

上述想法的任何其他想法或修复?

0 投票
0 回答
28 浏览

gtk4 - GTK4:图片不缩小

我正在尝试将图像插入 GTK4 的标题栏中。图像应适合父小部件的高度。在 gtk4-rs 我试过:

尽管can_shrink(true)已设置,但图像会导致标题增长。我也试过.height_request(1).width_request(1)了,但也没有效果。

如何使图像适合标题中其他小部件确定的标题大小?

0 投票
0 回答
29 浏览

gtk - 使用 Gtk::SpinButton::set_value() - 信号/插槽时卡住

这是我的代码。

在头文件中。

并初始化。成员函数。

这是私有成员函数。

那没问题。工作得很好。当鼠标单击“spinbutton_Direction_”的按钮时,信号/插槽工作良好。

问题是,“spinbutton_Direction_”的上下文也在另一个进程上发生了变化。当某些进程请求事件时,“spinbutton_Direction_”小部件会显示请求的值。它发生在5Hz。

OnOffsetDirectionChanged() 函数是一个处理另一个进程/实例请求的槽。如果删除此更新 - “spinbutton_Direction_.set_value(static_cast(direction));”,效果很好。但是像这样,它在几秒钟后卡住了。此持续时间未指定。在这种情况下,错误消息是

我的环境是

Windows 10 / MSYS2
gcc(Rev8,由 MSYS2 项目构建)10.3.0
gtkmm-4.0

0 投票
1 回答
23 浏览

c - 方法 g_input_stream_read_all() 被阻塞

我正在学习 GTK 库。现在,我正在尝试使用 GSocketClient。我正在连接到远程登录服务器以读取一些数据。这段代码

获取第一个块(1024 字节),然后阻塞直到连接中断。我做错了什么?谢谢 :)

0 投票
0 回答
23 浏览

c - 使用 `gtk_source_search_context_get_occurrences_count` 计算出现次数

我不明白如何计算gtk_source_search_context_get_occurrences_countGtkSourceBuffer 中出现的次数。正确找到并突出显示所有事件,但函数始终返回 -1,根据文档https://developer-old.gnome.org/gtksourceview/3.24/GtkSourceSearchContext.html#gtk-source-search-context-get-occurrences -count表示缓冲区没有被完全扫描。你能告诉我如何完全扫描缓冲区吗?这就是我目前所拥有的:

void find (GtkButton *button, gpointer userData) { (void)button;

}

0 投票
1 回答
202 浏览

rust - 在 GTK4 中制作一个可点击的框

我怎样才能使一个gtk4::Box可点击的gtk_rs

在 GTK3 中,似乎使用 anEventBox是实现此目的的方法,但是在 GTK4 中:

停止使用GtkEventBox

GtkEventBox不再需要并已被删除。

所有小部件都接收所有事件。

https://docs.gtk.org/gtk4/migrating-3to4.html#stop-using-gtkeventbox

所以现在似乎点击处理程序应该直接附加到小部件。但是,我找不到有关如何执行此操作的任何明确文档或示例。

如果有人能给我一个将点击侦听器附加到 a 的示例,将gtk4::Box不胜感激。