问题标签 [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 投票
2 回答
89 浏览

rust - 如何使用 Diesel 连接和 Gtk-rs 事件?

当在 gtk 条目中按下 Enter 键时,我正在尝试使用 Diesel 从数据库中获取对象。我的想法是在 main 函数中创建一个 Diesel SQLite 连接,然后在每次需要时借用它。

为此,我正在尝试使用一个非常简单的 MVC。这个想法是将连接传递给所有控制器并重用它。我知道这里需要一生。

编译时我得到这个:

这个错误是因为函数connect_activate有一个静态参数:fn connect_activate<F: Fn(&Self) + 'static>.

我不想在用户每次按下 Intro 键时使用返回连接的函数来初始化连接。相反,我想借用这种联系。

最有效的方法是什么?

非常感谢你。我希望你明白一切。

0 投票
1 回答
249 浏览

rust - 尝试从 GTK-RS 应用程序的事件处理程序中添加到 `gtk::ListBox` 时似乎没有任何反应

我正在尝试gtk::ListBox从不相关小部件的事件处理闭包中添加到容器中。有问题的列表框是通过gtk::Builder如下方式获取的:

还有我似乎无法添加的事件处理程序notes_list(请注意,我尝试过不使用clone!宏,使用强引用和弱引用,包装Rc指针等,但似乎没有任何改变):

没有出现错误消息 - 没有出现预期的行为(即向gtk::Label列表框中添加 a)。

这个模块的完整代码(以及我杂乱的代码库的其余部分):https ://github.com/WiredSound/nos/blob/master/src/gui.rs

如果有人能帮我解决这个问题,我将不胜感激,谢谢。

0 投票
0 回答
44 浏览

rust - Gtk 小部件即使在保存数据时也返回 None

我的 UI 中有一个文件选择器和一个组合框文本。现在我正在尝试从这两个内部回调中提取数据,但是即使它们清楚地具有用户设置的数据,它们也返回给我 None 。为什么会这样?

摘自https://gitlab.com/9898287/nixwriter/-/blob/rir/src/frontend/mod.rs#L41

摘自https://gitlab.com/9898287/nixwriter/-/blob/rir/src/frontend/mod.rs#L35

两者都在https://gitlab.com/9898287/nixwriter/-/blob/rir/src/frontend/mod.rs#L110中返回 None

即使在用户设置了文件并从 ComboboxText 中选择了一个项目之后。

0 投票
1 回答
611 浏览

rust - 致命错误 LNK1181:无法打开输入文件 'gtk-3.lib'

所以我为 rust 设置了 GTK-rs,我一定是做错了什么,因为当我尝试运行我的代码时,它返回了这个错误,我不知道如何修复它:

fatal error LNK1181: cannot open input file 'gtk-3.lib'

如果有帮助,我会使用 Eclipse IDE。

更多可能有帮助的数据:

我的环境变量是:

我的 Cargo.toml 文件:

我使用了一些修改后的示例代码进行测试:

0 投票
0 回答
313 浏览

rust - gtk-rs app 给出警告“您的应用程序没有实现 g_application_activate() 并且没有连接到 'activate' 信号的处理程序”

每次我启动一个简单的 GTK 应用程序时都会收到此警告:

这是应用程序的完整代码:

难道我做错了什么?是因为林间空地建造者吗?我尝试了这种方法,但它让事情变得更糟:应用程序仍然可以编译,但输出会抛出一个额外的严重错误:

0 投票
0 回答
85 浏览

deployment - 如何从 Linux 捆绑适用于 Windows 的 Gtk-rs 和 rusqlite 程序?

我有一个依赖于 libgtk3 和 sqlite3 的 Rust 程序,我想为 x86 Windows 生成一个安装程序/可执行文件。我无法访问 Windows 机器,因此我需要将它与我的主要开发平台 x86 Linux 捆绑在一起。

在 Rust 中如何进行交叉编译?

0 投票
1 回答
90 浏览

rust - 在 Rust 中子类化 gtk::Container 时处理子级

我正在尝试使用 gtk 的 Rust 绑定创建一个包含多个孩子的自定义 gtk 容器。gtk::Container我从和派生我的自定义类gtk::Widget。问题如下:

gtk::subclass::container::ContainerImpl文档)仅提供了几种实现方法。这些方法包括使容器能够处理孩子所需的add和方法。remove我的子类使用它自己的由该add方法填充的小部件向量。自定义大小协商和分配已实施并按预期工作。在大多数情况下,我都遵循本教程(针对纯 C 语言)。但是该get_children方法不起作用,它返回一个空向量。这是预期的,因为该方法使用forallforeach不知道我的自定义小部件存储的方法。但这些方法是gtk::ContainerExt因此我的子类无法定义(至少没有手动实现所有相关方法)。我遵循的教程覆盖了这些方法。

我不知道如何继续,因为感觉孩子没有正确注册可能会导致以后的内存泄漏,并且它会使某些方法变得get_children无用。gtk-rs 有处理孩子的特殊功能吗?我在这个方向上找不到任何文档。但是必须有一种可能性,因为在不能处理子类的情况下对容器进行子类化几乎是无用的。

0 投票
1 回答
653 浏览

multithreading - gtk-rs:如何从另一个线程更新视图

我正在使用gtk-rs创建一个 UI 应用程序。在那个应用程序中,我必须生成一个线程来不断地与另一个进程通信。有时,我必须根据该线程中发生的情况更新 UI。但是,我不确定如何执行此操作,因为我无法跨线程保存对 UI 任何部分的引用。

这是我尝试过的代码:

但是,我得到了错误:

这是有道理的。我可以理解 Gtk 小部件不是线程安全的。但是那我该如何更新它们呢?有没有办法安全地向 UI 线程发送信号?或者有没有办法以.lines().for_each(不阻塞用户界面的方式在同一个线程中运行循环?

无论我采用什么解决方案,都必须具有非常高的性能。我将发送比示例中更多的数据,并且我想要一个非常低延迟的屏幕刷新。

谢谢你的帮助!

0 投票
0 回答
12 浏览

gtk - 使用 scale_simple 重新缩放 pixbuf 时无法获取 InterpType

我使用构建器来构建 GTK 应用程序。当我收到调整大小的信号时,我想调整图像的大小,并且我想通过调整 pixbuf 的大小来实现,如下所示:

问题是 gdk_pixbuf 是一个私有 crate,这意味着我无法访问 InterpType,因此无法调整图像大小。

我尝试自己导入 gdk_pixbuf 并以许多不同的方式引用 InterpType 但这给了我其他问题。

0 投票
1 回答
546 浏览

rust - gtk-rs:如何监听键盘事件

我正在使用gtk-rs并希望能够检测到何时按下任何键。

从一些在线搜索来看,在 C 中执行此操作的方法似乎是使用gtk_widget_add_events然后g_signal_connect. 这个答案有一个很好的解释。

在 Rust 中,我可以调用Widget::add_events. 我还找到了g_signal_connect_*. 但是,这些函数是unsafe未记录的,并且似乎将 C 类型作为参数。

我的问题是:

  1. 为了使用gobject_sys::g_signal_connect_closure,我如何创建一个GObjectGClosure. 在锈?rust 结构和闭包可以转换成那个吗?
  2. 是否有更好、更惯用的方式来监听关键事件?我很难相信做这样一个基本的事情需要这样一个深奥的界面。我已经看到对特定键盘快捷键或键盘加速组的一些支持,但我无法找到任何文档或示例来监听按键事件。