Rust语言之egui库窗口中简单的触发事件(6)

案例(1):检测按下按键或组合键

输入代码:

//简单的事件监听事件
use eframe::egui;

fn main() -> eframe::Result<()> {
    let options = eframe::NativeOptions::default();

    eframe::run_simple_native("My egui App", options, move |ctx, _frame| {
        egui::CentralPanel::default().show(ctx, |ui| {
            //这是控件提示
            if ui.input(|i|i.key_pressed(egui::Key::Enter)){
                println!("press enter");
            }
            if ui.input_mut(|i|i.consume_key(egui::Modifiers::CTRL, egui::Key::D)){
                println!("press ctrl+D");
            }
        });
	})
}

显示:

案例(2):输入框输入字符串后按enter键显示列表

输入代码:

//简单的事件监听事件
use eframe::egui;

fn main() -> eframe::Result<()> {
    let options = eframe::NativeOptions::default();
    let mut textedit = String::new();
    let mut texts = Vec::new();

    eframe::run_simple_native("My egui App", options, move |ctx, _frame| {
        egui::CentralPanel::default().show(ctx, |ui| {
            //这是控件提示
            let rp=ui.text_edit_singleline(&mut textedit);
            
            if ui.input(|i|i.key_pressed(egui::Key::Enter)){
                texts.push(textedit.clone());
                textedit.clear();
                rp.request_focus();
            }
                
            for idx in &texts{
                ui.label(idx);
            }
        });
	})
}

显示:

案例(3):输入框中输入数值拖动后数值变大或小

输入代码:

//简单的事件监听事件
//dragvalue输入数值拖动变大变小
use eframe::egui;

fn main() -> eframe::Result<()> {
    let options = eframe::NativeOptions::default();
    let mut num = 0;

    eframe::run_simple_native("My egui App", options, move |ctx, _frame| {
        egui::CentralPanel::default().show(ctx, |ui| {
            //这是控件区
            ui.add(egui::DragValue::new(&mut num));
        });
	})
}

显示:

案例(4):前置与后置描述拖动数值变化DragValue

输入代码:

//简单的事件监听事件
//dragvalue输入数值拖动变大变小
use eframe::egui;

fn main() -> eframe::Result<()> {
    let options = eframe::NativeOptions::default();
    let mut num = 0;

    eframe::run_simple_native("My egui App", options, move |ctx, _frame| {
        egui::CentralPanel::default().show(ctx, |ui| {
            //前置描述
            ui.add(egui::DragValue::new(&mut num).prefix("selcet:"));
            //后置描述
            ui.add(egui::DragValue::new(&mut num).suffix("*"));
        });
	})
}

显示:

案例(5):设置拖动数值变化DragValue的数范围

输入代码:

//简单的事件监听事件
//dragvalue输入数值拖动变大变小
use eframe::egui;

fn main() -> eframe::Result<()> {
    let options = eframe::NativeOptions::default();
    let mut num = 0;

    eframe::run_simple_native("My egui App", options, move |ctx, _frame| {
        egui::CentralPanel::default().show(ctx, |ui| {
            //限定范围
            ui.add(egui::DragValue::new(&mut num).clamp_range(0..=100));
        });
	})
}

显示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值