问题标签 [gtk-rs]

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 回答
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不胜感激。

0 投票
0 回答
50 浏览

rust - .pack_start() 不适用于 gtk-rs Box

gtk4::Box在使用 gtk-rs 的以下代码中,我不断收到“hbox.pack_start”的错误“由于不满足特征边界而无法调用方法”。我已经在其他 gtk-rs 应用程序和文档中看到了这种方法,所以我不确定我做错了什么。

这是完整的错误消息:

0 投票
1 回答
113 浏览

rust - 如何在 gtk4-rs 中使用鼠标按钮事件?

我正在尝试使用 Rust 和 gtk4-rs 在我的应用程序中的 TreeView 上捕获右键单击事件。我没有看到鼠标按钮事件的特定 EventController。我确实看到了 EventControllers 用于键盘按下运动事件之类的事情。我最终使用了 EventControllerLegacy 并且只检测了闭包内的事件类型,但我觉得我在这里遗漏了一些东西。还有其他方法我应该从鼠标获取按钮按下事件吗?这是我的代码:

我认为我遗漏了什么的原因是EventControllerLegacy的文档说明了以下内容:

EventControllerLegacy 是一个事件控制器,提供对事件流的原始访问。只有在其他事件控制器或手势都没有完成这项工作时,才应将其用作最后的手段。

我正在使用 Rust 1.56.0 和 gtk4-rs 0.4.2

谢谢

0 投票
1 回答
33 浏览

rust - 如何在 Rust 中获取 gtk::RadioButton 的选定状态?

在 Python 的 Gtk 模块中,您可以使用Gtk.RadioButton.get_active()来获取单选按钮是否被选中。但是,我在 Rust 的等价物gtk::RadioButton. 当我尝试使用RadioButton.active()时,我收到一条错误消息,指出不满足gtk::RadioButton. 我已经尝试在文档中搜索get(activecheckedstateselected,但无济于事。这应该是不言自明的,所以我认为我不需要提供代码示例。有谁知道如何RadioButton在 Rust 中选择(最好不使用回调)?

0 投票
1 回答
92 浏览

rust - 设置 GTK 应用程序标题

我使用 Gtk-rs 创建了一个 GTK 4 应用程序。在我为创建它而阅读的所有教程和文档中,我看到我应该使 application_id 成为独一无二的东西,例如“org.rk.Counter”,这是我选择的。不幸的是,这显示为 Dock 中的应用程序名称。这是我的代码:

窗口具有正确的标题,如 中设置的那样build_ui(),但它在图标上的显示方式如下:

应用标题

如何更改图标的标题?我应该无视我看到的建议并改变.application_id()吗?

0 投票
1 回答
32 浏览

rust - Gtk-rs:在 glib::timeout_add 中设置标签

我是 rust 新手,并且对 GTK 中的对象/变量的范围有疑问。我有以下代码,它有效,但我需要在 GTK 窗口中将标签设置为变量的文本watch_text。这是代码:

问题是在评论部分,无论我如何尝试访问或克隆 imp.watch,我都会收到错误消息NonNull<GObject> cannot be sent between threads safely。如何将标签文本设置为watch_text

0 投票
1 回答
38 浏览

rust - 如何在 GTK-rs 的回调中访问状态和模板子项

gtk-rs 的教程和示例确实不完整且参差不齐,因此我试图拼凑如何在按钮回调中修改应用程序的状态以及某些子元素的状态。所以,简而言之,我有:

ObjectImpl这个结构中,我有一个constructed方法,它调用父构造的方法,然后调用setup_callbacks父对象,它Window实际上是 GTK 继承层次结构的一部分:

我需要同时访问结构的stateheaderbar属性imp::Window,并修改 的属性project_pathstate调用set_subtitle. headerbar我已经尝试了各种变体,使用变量和Rcs 的所有组合,RefCells我似乎无法克服这个错误(或它的一些排列):

必须有一种方法来完成我需要完成的工作,如果您无法在按钮单击回调中修改任何其他界面对象,您的 UI 将受到严重阻碍,但我不知道如何

0 投票
1 回答
33 浏览

rust - 在rust和gtk4中,为什么gtk::Label不满足gtk::Widget?

我正在尝试使用 gtk4 绑定来学习 rust,并决定尝试ListStore作为ListBox. 为了绑定模型,Widget需要返回的函数,但我需要一个Label. 为什么Label继承Widget(实现IsA<Widget>)的不满足Widget类型?

错误:

完整代码: