代码: 全选
[package]
name = "hello_world_desktop"
version = "0.1.0"
edition = "2021"
[dependencies]
eframe = "0.27" # 使用了更新的版本main.rs:
代码: 全选
// src/main.rs
use eframe::{egui, NativeOptions};
use egui::{FontData, FontDefinitions, FontFamily};
fn main() -> Result<(), eframe::Error> {
let options = NativeOptions {
viewport: egui::ViewportBuilder::default()
.with_inner_size(egui::Vec2::new(640.0, 480.0)),
..Default::default()
};
eframe::run_native(
"Hello World from Rust",
options,
Box::new(|cc| {
// --- 字体配置开始 ---
let mut fonts = FontDefinitions::default();
// 添加支持中文的字体 (以 Windows 为例)
// 你可以尝试 "Microsoft YaHei" 或 "SimHei"
// 这里使用 "Microsoft YaHei"
fonts.font_data.insert(
"chinese_font".to_owned(),
FontData::from_static(include_bytes!(r"C:\Windows\Fonts\msyh.ttc")), // 微软雅黑 ttc 文件
// 或者尝试 SimHei: include_bytes!(r"C:\Windows\Fonts\simhei.ttf")
);
// 将新字体添加到字体族映射中
fonts.families.entry(FontFamily::Proportional).or_default().insert(0, "chinese_font".to_owned());
fonts.families.entry(FontFamily::Monospace).or_default().insert(0, "chinese_font".to_owned());
// 将字体设置应用到 egui 上下文
cc.egui_ctx.set_fonts(fonts);
// --- 字体配置结束 ---
// 创建并返回 App 实例,**不使用 Ok 包装**
Box::new(MyApp::default()) as Box<dyn eframe::App>
}),
)
}
#[derive(Default)]
struct MyApp;
impl eframe::App for MyApp {
fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
egui::CentralPanel::default().show(ctx, |ui| {
ui.heading("Hello, World from Rust!");
ui.label("这是一个简单的 Rust GUI 应用");
ui.label("现在中文应该可以正常显示了!");
});
}
}