You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

gtk4-rs:如何将glib::Object转换为gdk::Monitor指定窗口显示器

解决方法

你可以通过**glib::Object的向下转型(downcast)**将获取到的glib::Object转换为gdk::Monitor类型,具体代码如下:

use gdk4::Monitor;

// 原获取显示器列表的代码
let monitors = gdk::Display::default().unwrap().monitors();

// 获取第一个显示器并向下转型为gdk::Monitor
if let Some(monitor_obj) = monitors.item(0) {
    match monitor_obj.downcast::<Monitor>() {
        Ok(monitor) => {
            // 这里即可将monitor传入window.set_monitor方法
            window.set_monitor(Some(&monitor));
        }
        Err(e) => eprintln!("转换显示器类型失败: {}", e),
    }
}

补充说明

  • downcast::<T>()方法会尝试将glib::Object转换为指定的GObject子类类型(此处为gdk::Monitor),返回Result<T, Error>,需要处理成功或失败的情况。
  • 若能确定获取到的Object必然是gdk::Monitor,也可以用更简洁的方式获取引用:
    if let Some(monitor) = monitors.item(0).and_then(|obj| obj.downcast_ref::<Monitor>()) {
        window.set_monitor(Some(monitor));
    }
    

内容的提问来源于stack exchange,提问作者a curious student

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 03:59:53