在 gtk-rs 中,如何获取 gtk::Window(大部分)打开的当前屏幕?
In gtk-rs, how do I get the current screen that a gtk::Window is (mostly) on?
我想要完成的是计算我的应用程序最常使用的屏幕的 dpi(或者,在我的例子中,dpmm)。据我所知,现代的方法是调用 gdk::Monitor::get_height_mm
和 gdk::Monitor::get_width_mm
.
所以,从 window: gtk::Window
开始,我正在尝试像这样获取监视器:
let screen = window.get_display().and_then(|display| get_monitor_at_window(&window));
但是,gtk::Window
没有 IsA<gdk::Window>
实现:
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
到 window 所在屏幕的宽度和高度的毫米数的路径是什么?
一个gtk::Window
is not the same as a gdk::Window
。前者更像是一个“window”的概念,而后者更像是Xwindows的概念。在其他显示协议中,这些也称为“表面”,这就是它在 GTK 4 中重命名的原因,也是为了消除这种混淆。
无论如何,要在 GTK 中获取小部件的底层 surface/window,您可以调用 get_window()
method on it (in gtk-rs, this is part of the gtk::WidgetExt trait)
我想要完成的是计算我的应用程序最常使用的屏幕的 dpi(或者,在我的例子中,dpmm)。据我所知,现代的方法是调用 gdk::Monitor::get_height_mm
和 gdk::Monitor::get_width_mm
.
所以,从 window: gtk::Window
开始,我正在尝试像这样获取监视器:
let screen = window.get_display().and_then(|display| get_monitor_at_window(&window));
但是,gtk::Window
没有 IsA<gdk::Window>
实现:
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
到 window 所在屏幕的宽度和高度的毫米数的路径是什么?
一个gtk::Window
is not the same as a gdk::Window
。前者更像是一个“window”的概念,而后者更像是Xwindows的概念。在其他显示协议中,这些也称为“表面”,这就是它在 GTK 4 中重命名的原因,也是为了消除这种混淆。
无论如何,要在 GTK 中获取小部件的底层 surface/window,您可以调用 get_window()
method on it (in gtk-rs, this is part of the gtk::WidgetExt trait)