首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在gtk-rs中,如何获得gtk::Window所在的当前屏幕(主要是)?

在gtk-rs中,如何获得gtk::Window所在的当前屏幕(主要是)?
EN

Stack Overflow用户
提问于 2021-05-22 13:09:26
回答 1查看 571关注 0票数 0

我想要完成的是计算我的应用程序所使用的屏幕的dpi (或者在我的例子中是dpmm)。据我所知,现代的方法是调用gdk::Monitor::get_height_mmgdk::Monitor::get_width_mm

所以,从window: gtk::Window开始,我试着让监视器像这样:

代码语言:javascript
复制
let screen = window.get_display().and_then(|display| get_monitor_at_window(&window));

但是,gtk::Window没有IsA<gdk::Window>实现:

代码语言:javascript
复制
8 |     window.get_display().and_then(|display| display.get_monitor_at_window(&window));
  |                                                                           ^^^^^^^ the trait `glib::IsA<gdk::auto::window::Window>` is not implemented for `gtk::Window`
  |
  = help: the following implementations were found:
            <gtk::Window as glib::IsA<glib::Object>>
            <gtk::Window as glib::IsA<gtk::Bin>>
            <gtk::Window as glib::IsA<gtk::Buildable>>
            <gtk::Window as glib::IsA<gtk::Container>>
          and 2 others

那么,从gtk::Window到窗口所在屏幕的宽度和高度是多少呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-22 17:11:59

gtk::Windowgdk::Window不一样。前者更像是“窗口”的概念,而后者则更好地映射到X窗口的概念。在其他显示协议中,这些也被称为“表面”,这就是为什么在GTK 4中重命名它的原因,也是为了消除这种混乱。

无论如何,要在GTK中获取小部件的底层表面/窗口,可以在其上调用get_window()方法(在gtk-rs中,这是gtk::WidgetExt特性的一部分)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67649865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档