问题标签 [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.
rust - 如何使用 Diesel 连接和 Gtk-rs 事件?
当在 gtk 条目中按下 Enter 键时,我正在尝试使用 Diesel 从数据库中获取对象。我的想法是在 main 函数中创建一个 Diesel SQLite 连接,然后在每次需要时借用它。
为此,我正在尝试使用一个非常简单的 MVC。这个想法是将连接传递给所有控制器并重用它。我知道这里需要一生。
编译时我得到这个:
这个错误是因为函数connect_activate
有一个静态参数:fn connect_activate<F: Fn(&Self) + 'static>
.
我不想在用户每次按下 Intro 键时使用返回连接的函数来初始化连接。相反,我想借用这种联系。
最有效的方法是什么?
非常感谢你。我希望你明白一切。
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
如果有人能帮我解决这个问题,我将不胜感激,谢谢。
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 中选择了一个项目之后。
rust - 致命错误 LNK1181:无法打开输入文件 'gtk-3.lib'
所以我为 rust 设置了 GTK-rs,我一定是做错了什么,因为当我尝试运行我的代码时,它返回了这个错误,我不知道如何修复它:
fatal error LNK1181: cannot open input file 'gtk-3.lib'
如果有帮助,我会使用 Eclipse IDE。
更多可能有帮助的数据:
我的环境变量是:
我的 Cargo.toml 文件:
我使用了一些修改后的示例代码进行测试:
rust - gtk-rs app 给出警告“您的应用程序没有实现 g_application_activate() 并且没有连接到 'activate' 信号的处理程序”
每次我启动一个简单的 GTK 应用程序时都会收到此警告:
这是应用程序的完整代码:
难道我做错了什么?是因为林间空地建造者吗?我尝试了这种方法,但它让事情变得更糟:应用程序仍然可以编译,但输出会抛出一个额外的严重错误:
deployment - 如何从 Linux 捆绑适用于 Windows 的 Gtk-rs 和 rusqlite 程序?
我有一个依赖于 libgtk3 和 sqlite3 的 Rust 程序,我想为 x86 Windows 生成一个安装程序/可执行文件。我无法访问 Windows 机器,因此我需要将它与我的主要开发平台 x86 Linux 捆绑在一起。
在 Rust 中如何进行交叉编译?
rust - 在 Rust 中子类化 gtk::Container 时处理子级
我正在尝试使用 gtk 的 Rust 绑定创建一个包含多个孩子的自定义 gtk 容器。gtk::Container
我从和派生我的自定义类gtk::Widget
。问题如下:
gtk::subclass::container::ContainerImpl
(文档)仅提供了几种实现方法。这些方法包括使容器能够处理孩子所需的add
和方法。remove
我的子类使用它自己的由该add
方法填充的小部件向量。自定义大小协商和分配已实施并按预期工作。在大多数情况下,我都遵循本教程(针对纯 C 语言)。但是该get_children
方法不起作用,它返回一个空向量。这是预期的,因为该方法使用forall
和foreach
不知道我的自定义小部件存储的方法。但这些方法是gtk::ContainerExt
因此我的子类无法定义(至少没有手动实现所有相关方法)。我遵循的教程覆盖了这些方法。
我不知道如何继续,因为感觉孩子没有正确注册可能会导致以后的内存泄漏,并且它会使某些方法变得get_children
无用。gtk-rs 有处理孩子的特殊功能吗?我在这个方向上找不到任何文档。但是必须有一种可能性,因为在不能处理子类的情况下对容器进行子类化几乎是无用的。
multithreading - gtk-rs:如何从另一个线程更新视图
我正在使用gtk-rs创建一个 UI 应用程序。在那个应用程序中,我必须生成一个线程来不断地与另一个进程通信。有时,我必须根据该线程中发生的情况更新 UI。但是,我不确定如何执行此操作,因为我无法跨线程保存对 UI 任何部分的引用。
这是我尝试过的代码:
但是,我得到了错误:
这是有道理的。我可以理解 Gtk 小部件不是线程安全的。但是那我该如何更新它们呢?有没有办法安全地向 UI 线程发送信号?或者有没有办法以.lines().for_each(
不阻塞用户界面的方式在同一个线程中运行循环?
无论我采用什么解决方案,都必须具有非常高的性能。我将发送比示例中更多的数据,并且我想要一个非常低延迟的屏幕刷新。
谢谢你的帮助!
gtk - 使用 scale_simple 重新缩放 pixbuf 时无法获取 InterpType
我使用构建器来构建 GTK 应用程序。当我收到调整大小的信号时,我想调整图像的大小,并且我想通过调整 pixbuf 的大小来实现,如下所示:
问题是 gdk_pixbuf 是一个私有 crate,这意味着我无法访问 InterpType,因此无法调整图像大小。
我尝试自己导入 gdk_pixbuf 并以许多不同的方式引用 InterpType 但这给了我其他问题。
rust - gtk-rs:如何监听键盘事件
我正在使用gtk-rs
并希望能够检测到何时按下任何键。
从一些在线搜索来看,在 C 中执行此操作的方法似乎是使用gtk_widget_add_events
然后g_signal_connect
. 这个答案有一个很好的解释。
在 Rust 中,我可以调用Widget::add_events
. 我还找到了g_signal_connect_*
. 但是,这些函数是unsafe
未记录的,并且似乎将 C 类型作为参数。
我的问题是:
- 为了使用
gobject_sys::g_signal_connect_closure
,我如何创建一个GObject
和GClosure
. 在锈?rust 结构和闭包可以转换成那个吗? - 是否有更好、更惯用的方式来监听关键事件?我很难相信做这样一个基本的事情需要这样一个深奥的界面。我已经看到对特定键盘快捷键或键盘加速组的一些支持,但我无法找到任何文档或示例来监听按键事件。