我试图用gtk 4-rs创建一个简单的窗口,我真的找不到关于如何调用主gtk循环的文档。
use gtk::prelude::*;
fn main() {
// call gtk::init() to initialize gtk.
if gtk::init().is_err() {
println!("Failed to initialize GTK.");
return;
}
let win = gtk::Window::new();
let lab = gtk::Label::new(Some("Type something"));
let text_area = gtk::Entry::new();
// create a grid to hold the widgets
let grid = gtk::Grid::new();
grid.set_column_spacing(10);
grid.set_row_spacing(10);
grid.attach(&lab, 0, 0, 1, 1);
grid.attach(&text_area, 1, 0, 1, 1);
win.set_child(Some(&grid));
win.show();
}发布于 2022-07-06 13:39:04
您缺少了GTK的Application,它自动初始化GTK并创建一个事件循环:
use gtk::prelude::*;
fn main() {
let application =
gtk::Application::new(Some("application-id"), Default::default());
application.connect_activate(build_ui);
application.run();
}
fn build_ui(app: >k::Application) {
let win = gtk::ApplicationWindow::new(app);
let lab = gtk::Label::new(Some("Type something"));
let text_area = gtk::Entry::new();
// create a grid to hold the widgets
let grid = gtk::Grid::new();
grid.set_column_spacing(10);
grid.set_row_spacing(10);
grid.attach(&lab, 0, 0, 1, 1);
grid.attach(&text_area, 1, 0, 1, 1);
win.set_child(Some(&grid));
win.show();
}https://stackoverflow.com/questions/72611039
复制相似问题