1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Slintの記述をRustファイルから分離して.slintに書く【Rustで動くGUIライブラリ】

Posted at

Rustミリしらです
SlintというRust(やその他いろいろ)で動くGUIライブラリがあります
https://slint.dev/
そのSlintをちょっと触っての備忘録です

https://slint.dev/releases/1.3.2/docs/tutorial/rust
Slintのチュートリアルを試したのですが、このチュートリアルではSlintを一貫してRustのソースファイル(.rs)にRustのマクロとして記述していきます
例えばHelloWorldではこのように

main.rs
fn main() {
    MainWindow::new().unwrap().run().unwrap();
}

slint::slint! {
    export component MainWindow inherits Window {
        preferred-width: 400px;
        preferred-height: 200px;
        Text {
            text: "hello world";
            color: white;
            font-size: 24px;
        }
    }
}
}

なります

image.png
ちなみに背景が黒いのはWindowsをダークモードにしてると勝手にこうなるようです
勝手にこうしない方法もたしかあるので大丈夫です

Rustのほうに全部書いていくのがなんとなく嫌だったのですが、Slintだけ別ファイルに記述していけるらしいのでそれを試します

やってみる

まずビルドスクリプト?を作ります。ここではCargo.tomlと同じ階層にbuild.rsという名前で作成することにしました。

次にCargo.tomlを編集します

Cargo.toml
[package]
...
build = "build.rs"

...
[build-dependencies]
slint-build = "1.3.2"

packageの項目でbuild.rsを使うよう指定してあげて、ビルドスクリプトの依存関係としてslint-buildというものを追加します。これが.slintファイルを使ってコンパイルするときに役立つらしい

次に.slintファイルを作成していきます
ここでは適当にCargo.tomlと同じ階層にui.slintという名前で作成

ui.slint
export component MainWindow inherits Window {
        preferred-width: 400px;
        preferred-height: 200px;
        Text {
            text: "hello world";
            color: white;
            font-size: 24px;
        }
    }

build.rsに戻って

build.rs
fn main() {
    slint_build::compile("ui.slint").unwrap();
}

と書きます

最後にmain.rsを修正します

main.rs
slint::include_modules!();
fn main() {
    MainWindow::new().unwrap().run().unwrap();
}

マクロで記述していたSlintはさっき別ファイルに移したので全部消して、1行目のslint::include_modules!();も書き忘れないようにします
文字通りのことをしてくれるのでしょう。英語読めませんが...

完成

ここまでいくとコンパイルが通るようになります
image.png
SlintどころかRustも全くわかっていないので、Slintそのものはいつかちゃんと頑張って別の記事を書きたいですね

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?