Тема: gtk4 помилка при використанні метода структрури для запуску програми
Під час використання connect_startup і connect_activate
з методом структури з'являється помилка:
application.connect_startup(main_window.build_main_window());
| --------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected an `Fn(>k4::Application)` closure, found `()`
| |
| required by a bound introduced by this call
|
= help: the trait `for<'a> Fn<(&'a gtk4::Application,)>` is not implemented for `()`
main.rs
mod main_window;
pub use crate::main_window::MainWindow;
use gtk::{gio, prelude::*};
const APP_ID: &str = "org.gtk_rs.Movar";
fn main() {
// Створення нового екземпляра додатка
let application = gtk::Application::builder()
.application_id(APP_ID)
.build();
let new_settings = gio::Settings::new(APP_ID);
let main_window = MainWindow{
settings: new_settings,
app: application,
};
application.connect_startup(main_window.build_main_window());
application.connect_activate(main_window.activate_main_window());
application.run();
}
Методи main_window:
pub fn build_main_window(&self) {
//Побудова віджетів головного вікна
self.create_actions_entries();
self.create_accelerators();
let menubar = self.create_menubar();
self.app.set_menubar(Some(&menubar));
}
pub fn activate_main_window(&self) {
//Створення головного вікна програми та його відображення
let main_window = gtk::ApplicationWindow::builder()
.application(&self.app)
.title("Movar")
.default_width(800)
.default_height(600)
.show_menubar(true)
.build();
main_window.present();
}
Коли я використовував ці методі як просто окремі функції,
усе працювало без помилок.
Чому використання структури дає таку помилку?
Як це виправити?