Ржавчина. ГТК3. Метод get_screen() не найден в `gtk::Window`

Я хочу использовать css для своего окна, используя метод add_provider_for_screen.

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

Для этого мне нужно преобразовать окно в GdkScreen с помощью метода get_screen(). Однако, когда я пытаюсь это сделать, я получаю сообщение об ошибке: method not found in &gtk::Window . https://docs.gtk.org/gtk3/method.Window.get_screen.html

код main.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);
// ....
}

Кроме того, если я пытаюсь создать GdkScreen в fn init_window(), я получаю аналогичную ошибку: method not found in gtk::Window

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

Содержимое Cargo.toml:

[dependencies]
gtk="0.15.5"
gdk="0.15.4"
gdk-pixbuf="0.15.11"
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
0
0
27
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Из документации из Widgnet используйте метод WidgetExt::screen:

Get the gdk::Screen from the toplevel window associated with this widget. This function can only be called after the widget has been added to a widget hierarchy with a Window at the top.

Другие вопросы по теме