首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试调用gtk-rs中的gtk主循环

尝试调用gtk-rs中的gtk主循环
EN

Stack Overflow用户
提问于 2022-06-14 02:53:31
回答 1查看 80关注 0票数 -1

我试图用gtk 4-rs创建一个简单的窗口,我真的找不到关于如何调用主gtk循环的文档。

代码语言:javascript
复制
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();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-06 13:39:04

您缺少了GTK的Application,它自动初始化GTK并创建一个事件循环:

代码语言:javascript
复制
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: &gtk::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();
}

gtk-s的书有更多关于这方面的信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72611039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档