以下是在Debian上進行Rust圖形界面開發的教程,以GTK和Iced為例:
安裝依賴
sudo apt update
sudo apt install libgtk-3-dev pkg-config
創建項目并添加依賴
cargo new rust_gtk_app --bin
cd rust_gtk_app
在Cargo.toml
中添加:
[dependencies]
gtk = "0.16" # 檢查最新版本
編寫代碼
use gtk::prelude::*;
use gtk::{Application, ApplicationWindow, Button};
fn main() {
let app = Application::new(Some("com.example.gtkapp"), Default::default())
.expect("初始化失敗");
app.connect_activate(|app| {
let window = ApplicationWindow::new(app);
window.set_title("GTK示例");
window.set_default_size(300, 200);
let button = Button::with_label("點擊我");
button.connect_clicked(|_| println!("按鈕被點擊!"));
window.add(&button);
window.show_all();
});
app.run();
}
運行程序
cargo run
安裝依賴
sudo apt update
sudo apt install libgtk-3-dev # Iced依賴GTK
創建項目并添加依賴
cargo new iced_app --bin
cd iced_app
在Cargo.toml
中添加:
[dependencies]
iced = "0.10" # 檢查最新版本
編寫代碼
use iced::{button, Button, Column, Element, Sandbox, Settings, Text};
struct MyApp {
counter: i32,
increment_button: button::State,
}
#[derive(Debug, Clone)]
enum Message {
Increment,
}
impl Sandbox for MyApp {
type Message = Message;
fn new() -> Self {
MyApp {
counter: 0,
increment_button: button::State::new(),
}
}
fn title(&self) -> String {
String::from("Iced示例")
}
fn update(&mut self, message: Message) {
match message {
Message::Increment => self.counter += 1,
}
}
fn view(&mut self) -> Element<Message> {
Column::new()
.push(Text::new(format!("計數器: {}", self.counter)))
.push(Button::new(&mut self.increment_button, Text::new("增加"))
.on_press(Message::Increment))
.into()
}
}
fn main() -> iced::Result {
MyApp::run(Settings::default())
}
運行程序
cargo run
rust-qt
綁定,參考官方文檔。libgtk-3-dev
)。