我正在使用gtk4层-shell 铁 rust 绑定,并希望将我的窗口定位在特定的监视器上.

我有以下代码:

let monitors: gio::ListModel = gdk::Display::default().unwrap().monitors();

let monitor: glib::Object = monitors.item(0).unwrap();

因此,我得到了显示器作为一个glib::Object.但是gtk 4-layer-shell期望gdk::Monitor传递到window.set_monitor.我不知道如何与glib::Object人合作.

使用的库:gtk4-rs、gdk4、gtk4-layer-shell.

推荐答案

您可以使用monitor.downcast::<gdk::Monitor>()glib::Object实例转换为gdk::Monitor.

Rust相关问答推荐

如何初始化match声明中的两个变量而不会激怒borrow 判断器?

异步FN中的 rust 递归

制作一片连续整数的惯用Rust 方法?

如何指定不同的类型来常量Rust中的泛型参数?

为什么这是&q;,而让&q;循环是无限循环?

对于已经被认为是未定义行为的相同数据,纯粹存在`&;[u32]`和`&;mut[u32]`吗?

我如何制作一个变异迭代器来锁定内部数据直到删除?

如何使用RefCell::JOYMOMTborrow 对 struct 不同字段的可变引用

为什么HashMap::get和HashMap::entry使用不同类型的密钥?

Google chrome 和 Apple M1 中的计算着色器

Rust:为什么 Pin 必须持有指针?

Rust 中 Mutex<> 的深拷贝?

从 Rust 中的 if/else 中的引用创建 MappedRwLockWriteGuard

没有分号的返回表达式的性能是否比使用返回更好?在Rust ?

使用 serde_json 进一步处理字段

为什么基于 clap::Parser 读取的大量数字进行计算比硬编码该数字时慢?

有没有办法阻止 rust-analyzer 使非活动代码变暗?

Rustfmt 是否有明确类型的选项?

BigUint 二进制补码

如何从 Rust 中不同类型的多个部分加入 Path?