生锈.GTK3.在' gtk::Window '中找不到get_screen()方法



我想使用css为我的窗口使用"add_provider_for_screen"方法。

pub fn add_provider_for_screen(screen: &gdk::Screen, provider: &impl IsA<StyleProvider>, priority: u32) 

为此,我需要使用get_screen()方法将窗口转换为GdkScreen。然而,当我尝试这样做时,我得到错误:method not found in &gtk::Window。https://docs.gtk.org/gtk3/method.Window.get_screen.html

主要。rs代码:

use std::process::exit;
use gdk_pixbuf::Pixbuf;
use gtk::{Window, Image, Orientation, WindowType, CssProvider};
use gtk::prelude::{GtkWindowExt, WidgetExt, ContainerExt, ButtonExt, CssProviderExt};
fn main() {
gtk::init().unwrap();
init_window();
gtk::main();
}
fn init_css(win: &gtk::Window) {
let css = CssProvider::new();
css.load_from_path("main.css").unwrap();
let screen = win.gtk_window_get_screen().unwrap();
gtk::StyleContext::add_provider_for_screen(screen, &css, gtk::STYLE_PROVIDER_PRIORITY_APPLICATION);
}
fn init_window() {
let window = gtk::Window::new(WindowType::Toplevel);
init_css(&window);
// ....
}

此外,如果我尝试在fn init_window()中创建GdkScreen,我会得到类似的错误:method not found in gtk::Window

let screen = window.gtk_screen().unwrap();

货物。toml内容:

[dependencies]
gtk="0.15.5"
gdk="0.15.4"
gdk-pixbuf="0.15.11"

从文档中,从Widgnet中,使用方法WidgetExt::screen:

从与此相关的顶层窗口获取gdk::Screen小部件。这个函数只能在小部件完成后调用添加到小部件层次结构中,顶部有一个窗口。

相关内容

  • 没有找到相关文章

最新更新