首页 > 编程语言 >使用Rust编写的程序,可以使用快捷键启动、最小化、最大化和关闭窗口

使用Rust编写的程序,可以使用快捷键启动、最小化、最大化和关闭窗口

时间:2023-05-17 17:11:07浏览次数:41  
标签:group gtk accel 快捷键 window connect key 最小化 Rust

 

以下是一个使用Rust编写的程序,可以使用快捷键启动、最小化、最大化和关闭窗口:

 

use gtk::{prelude::*, Application, ApplicationWindow, WindowPosition};
use gdk::enums::key;

fn main() {
    let application = Application::new(Some("com.example"), Default::default()).expect("Initialization failed...");

    application.connect_activate(|app| {
        let window = ApplicationWindow::new(app);
        window.set_title("Rust GTK Window");
        window.set_default_size(350, 70);
        window.set_position(WindowPosition::Center);
        window.set_resizable(false);

        let accel_group = gtk::AccelGroup::new();
        window.add_accel_group(&accel_group);

        let minimize_key = gtk::AccelKey::new(key::M, gdk::ModifierType::CONTROL_MASK, gtk::AccelFlags::VISIBLE);
        accel_group.connect_entry(&minimize_key, true, |_| {
            window.iconify();
        });

        let maximize_key = gtk::AccelKey::new(key::X, gdk::ModifierType::CONTROL_MASK, gtk::AccelFlags::VISIBLE);
        accel_group.connect_entry(&maximize_key, true, |_| {
            if window.is_maximized() {
                window.unmaximize();
            } else {
                window.maximize();
            }
        });

        let quit_key = gtk::AccelKey::new(key::Q, gdk::ModifierType::CONTROL_MASK, gtk::AccelFlags::VISIBLE);
        accel_group.connect_entry(&quit_key, true, |_| {
            app.quit();
        });

        window.connect_delete_event(|_, _| {
            gtk::main_quit();
            Inhibit(false)
        });

        window.show_all();
    });

    application.run(&[]);
}

  

 

这个程序使用GTK库创建了一个窗口,并设置了窗口的标题、大小、位置和可调整性。它还使用了gtk::AccelGroup类来创建快捷键,并连接了一些事件来处理最小化、最大化和关闭窗口的操作。

 

为了使用快捷键,我们需要使用AccelKey类来创建一个有关键码、修饰符和标志的实例,并使用AccelGroup的connect_entry方法将其连接到窗口上。在事件处理程序中,我们可以使用窗口的方法来实现最小化、最大化和关闭窗口的操作。

 

最后,我们使用Application类来启动程序并运行GTK的主事件循环。

以下是一个使用Rust编写的程序,可以使用快捷键启动、最小化、最大化和关闭窗口:
use gtk::{prelude::*, Application, ApplicationWindow, WindowPosition};use gdk::enums::key;
fn main() {    let application = Application::new(Some("com.example"), Default::default()).expect("Initialization failed...");
    application.connect_activate(|app| {        let window = ApplicationWindow::new(app);        window.set_title("Rust GTK Window");        window.set_default_size(350, 70);        window.set_position(WindowPosition::Center);        window.set_resizable(false);
        let accel_group = gtk::AccelGroup::new();        window.add_accel_group(&accel_group);
        let minimize_key = gtk::AccelKey::new(key::M, gdk::ModifierType::CONTROL_MASK, gtk::AccelFlags::VISIBLE);        accel_group.connect_entry(&minimize_key, true, |_| {            window.iconify();        });
        let maximize_key = gtk::AccelKey::new(key::X, gdk::ModifierType::CONTROL_MASK, gtk::AccelFlags::VISIBLE);        accel_group.connect_entry(&maximize_key, true, |_| {            if window.is_maximized() {                window.unmaximize();            } else {                window.maximize();            }        });
        let quit_key = gtk::AccelKey::new(key::Q, gdk::ModifierType::CONTROL_MASK, gtk::AccelFlags::VISIBLE);        accel_group.connect_entry(&quit_key, true, |_| {            app.quit();        });
        window.connect_delete_event(|_, _| {            gtk::main_quit();            Inhibit(false)        });
        window.show_all();    });
    application.run(&[]);}
这个程序使用GTK库创建了一个窗口,并设置了窗口的标题、大小、位置和可调整性。它还使用了gtk::AccelGroup类来创建快捷键,并连接了一些事件来处理最小化、最大化和关闭窗口的操作。
为了使用快捷键,我们需要使用AccelKey类来创建一个有关键码、修饰符和标志的实例,并使用AccelGroup的connect_entry方法将其连接到窗口上。在事件处理程序中,我们可以使用窗口的方法来实现最小化、最大化和关闭窗口的操作。
最后,我们使用Application类来启动程序并运行GTK的主事件循环。

标签:group,gtk,accel,快捷键,window,connect,key,最小化,Rust
From: https://www.cnblogs.com/pythonClub/p/17409347.html

相关文章

  • [Rust] Enum
    enumColor{Red,Green,Blue,Yellow,}implColor{fnis_green(&self)->bool{ifletColor::Green=self{returntrue;}returnfalse;}fnis_green_parts(&self)->boo......
  • rust 中 str 与 String; &str &String
    StringString类型的数据和基本类型不同,基本类型的长度是固定的,所以可以在栈上分配,而String类型是变长的,所以需要在堆上分配,所以String类型实际上是一个指向堆的指针。他的结构和Vec很类似。从他的声明看也是一个u8的VecpubstructString{vec:Vec<u8>,}看这样一个定......
  • 用Rust实现DES加密/解密算法
    信息安全技术课程要求实现一下DES算法。对着一份Java代码断断续续抠了几天,算是实现出来了。这里记录一下算法思想和我的Rust实现。DES算法解析概述https://en.wikipedia.org/wiki/Data_Encryption_StandardDES是一种对称的分组加密算法,加密和解密使用同一个密钥,计算过程将数......
  • Rust 笔记 - 2
    结构体初始化Rust的结构体类似于C,使用关键字struct声明。structUser{active:bool,sign_in_count:u32,username:String,email:String}结构体中的每个元素称为“域”(field),域是可修改的(mutable),使用.来访问域的值。创建实例为了使用结构体,需要根据结......
  • 基于分时电价,采用改进粒子群算法,以最小化系统峰谷差率和用户成本最少为目标,并考虑电池
    基于分时电价,采用改进粒子群算法,以最小化系统峰谷差率和用户成本最少为目标,并考虑电池寿命和充电功率等约束条件,优化电动汽车充放电。参考论文:基于V2G的电动汽车充放电优化调度策略有注释简单易懂,可自己调整参数。ID:4525670541175133......
  • [Rust] Collect()
    Stringcollect:automaticllycallingconcatonstringletfoo:String=vec!["this","is","a","test"].into_iter().collect();println!("{:?}",foo);//thisisatest HashSet:let......
  • 【计算几何】Rust求解平面最近点对(寻找距离最近的两个点的距离)
    目录题目地址代码题目地址https://ac.nowcoder.com/acm/contest/52826/C代码usestd::io;usestd::cmp::Ordering;usestd::f64;#[derive(Debug,PartialEq,PartialOrd,Clone,Copy)]structPoint{x:f64,y:f64,}fneuclidean_distance(p1:&Point,p2:......
  • HBuilderX快捷键Netbeans版本
    [//删除选中行{"key":"ctrl+e","command":"editor.action.deleteLines","override":true},//在当前行下方插入空行并把光标移动到新行{"key":"shift+enter","command":"editor.action.insertLineAfter"......
  • IDEA 常用快捷键(keymap)
    IDEA常用快捷键(keymap)1.1Ctrl+…删除当前行Ctrl+Y复制当前行,直接在下一行复制出当前行Ctrl+D(Duplicate复制)选中文本,连续按可以扩大选中范围(以单词为单位)Ctrl+W在当前行上面插入一行空行。注意:需要在行首使用该快捷键Ctrl+Enter删除单词,可......
  • Idea快捷键大全(Windows)
    Ctrl快捷键介绍Ctrl+F在当前文件进行文本查找(必备)Ctrl+R在当前文件进行文本替换(必备)Ctrl+Z撤销(必备)Ctrl+Y删除光标所在行或删除选中的行(必备)Ctrl+X剪切光标所在行或剪切选择内容Ctrl+C复制光标所在行或复制选择内容Ctrl+D复制光标所在行......