Rust-GUI图形库:Iced 计数器项目添加增减按钮与文本框(2)
一、前置环境准备
- 官网下载安装:https://www.rust-lang.org/tools/installrustc 1.96.1 (31fca3adb 2026-06-26)
二、创建项目
- Windows 打开 PowerShell / Linux/macOS 终端执行
1. 创建二进制项目
# 创建名为 iced_counter 的项目 cargo new iced_counter # 进入项目目录 cd iced_counter项目目录:
iced_counter/ ├── Cargo.toml # 项目配置、依赖管理 ├── Cargo.lock # 依赖版本锁定文件(自动生成,无需修改) ├── src/ │ └── main.rs # 全部业务代码(窗口、逻辑、UI) └── target/ # 编译产物目录(自动生成) ├── debug/ # cargo run 开发编译文件 └── release/ # --release 发布成品程序2. 添加 Iced 依赖(修改 Cargo.toml)
[package] name = "iced_counter" version = "0.1.0" edition = "2021" # 依赖 Iced GUI 框架,使用最新稳定版 [dependencies] iced = "0.14"说明:
iced = "0.14"会自动引入窗口、组件、渲染全套功能,无需额外细分依赖。
三、完整 src/main.rs(整理带注释代码)
直接覆盖自动生成的src/main.rs:
// 引入居中对齐常量 use iced::Center; // 引入布局列容器、按钮、文本基础组件 use iced::widget::{Column, button, column, text}; // 程序入口函数,返回iced运行结果 pub fn main() -> iced::Result { // 启动窗口程序,传入状态更新函数 + UI渲染视图函数 iced::run(Counter::update, Counter::view) } // 计数器状态结构体,存储界面需要维护的数据 #[derive(Default)] struct Counter { // 计数值 value: i64, } // 界面交互消息枚举:所有用户操作都会生成对应消息 #[derive(Debug, Clone, Copy)] enum Message { // 点击加号按钮 Increment, // 点击减号按钮 Decrement, } impl Counter { /// 根据收到的消息更新内部状态 /// self: 计数器自身状态 /// message: 用户交互产生的事件消息 fn update(&mut self, message: Message) { match message { // 加1逻辑 Message::Increment => { self.value += 1; } // 减1逻辑 Message::Decrement => { self.value -= 1; } } } /// 渲染整个界面视图,返回垂直布局容器 /// self: 当前计数器状态,用于展示数据 /// 返回值:包含交互消息的Column布局组件 fn view(&self) -> Column<'_, Message> { column![ // 加号按钮,点击触发Increment消息 button("Increment").on_press(Message::Increment), // 显示当前计数值,字体大小50 text(self.value).size(50), // 减号按钮,点击触发Decrement消息 button("Decrement").on_press(Message::Decrement) ] // 整体内边距20像素 .padding(20) // 水平方向所有子元素居中对齐 .align_x(Center) } }四、运行项目
1. 开发模式运行(热编译、带日志)
cargo run首次运行会下载编译 Iced 及其底层图形依赖,等待几分钟。 运行成功会弹出窗口。
2. 运行窗口
注:这个是在上个案例中升级了点内容!!!