Creating Rust/QML Project

Using cargo-generate to create Rust/QML Project.

Ayush Singh published on
4 min, 639 words

Background

For the last few months, I have been pushing Rust/Qt development along. I am the author of ki18n crate and am currently in the middle of creating kconfig crate as a part of Season of KDE 2022.

In this post, I will walk you through creating a new Rust/QML project using cargo-generate templates. I made these templates to encourage more people to test out Qt development with Rust.

Install Cargo Generate

Full Instructions are present in the repository here.

Using Cargo

With System’s OpenSSL

cargo install cargo-generate

With vendored OpenSSL

cargo install cargo-generate --features vendored-openssl

Arch Linux

pacman -S cargo-generate

Manual

  1. Download the binary tarball for your platform from releases page.
  2. Unpack the tarball and place the binary cargo-generate in ~/.cargo/bin/

Select the Template

Currently, there are two templates I have created for Rust/QML. The templates can be found here.

Basic QtQuick Application

This template creates a basic QtQuick Application with Rust. It does not contain any KDE Components. This template should work in all platforms Qt, and Rust is supported.

Dependencies

Manual

Qt can be installed using the installer. Be sure to install qmake since it is used by qmetaobject crate to detect system Qt install.

Ubuntu

sudo apt install build-essential qtbase5-dev qtdeclarative5-dev libqt5svg5-dev qtquickcontrols2-5-dev qml-module-qtquick-layouts

Generate Project

cargo generate --git https://invent.kde.org/oreki/rust-qt-template/ basic-qtquick --name myproject

Run Project

We will also set RUST_LOG variable for enabling logs.

RUST_LOG=error,warn,info,debug,trace cargo run

Screenshots

Kirigami Application

This template creates a basic Kirigami Application with Rust. Currently, this template is only tested in Linux. It can technically work in other platforms if the KDE Frameworks path is manually specified, but I have not tried that. If you would like to help, the crate for detecting KDE Frameworks is kde_frameworks.

Dependencies

Manual

  1. Qt can be installed using the installer. Be sure to install qmake since it is used by qmetaobject crate to detect system Qt install.

  2. KDE Frameworks (Kirigami and KI18n) should also be installed. Be sure to install kf5-config since it is used to locate Kirigami and KI18n Frameworks.

Ubuntu

   sudo apt install build-essential qtbase5-dev qtdeclarative5-dev libqt5svg5-dev qtquickcontrols2-5-dev qml-module-qtquick-layouts qml-module-org-kde-kirigami2 kirigami2-dev libkf5i18n-dev gettext libkf5coreaddons-dev libkf5kdelibs4support5-bin

Arch-based

   sudo pacman -Syu base-devel extra-cmake-modules cmake kirigami2 kde-sdk-meta gettext

Fedora

sudo dnf groupinstall "Development Tools" "Development Libraries"
sudo dnf install extra-cmake-modules cmake qt5-qtbase-devel qt5-qtdeclarative-devel qt5-qtquickcontrols2-devel kf5-kirigami2 kf5-kirigami2-devel kf5-ki18n-devel kf5-kcoreaddons-devel gettext

Generate Project

cargo generate --git https://invent.kde.org/oreki/rust-qt-template/ kirigami --name myproject

Run Project

We will also set RUST_LOG variable for enabling logs.

RUST_LOG=error,warn,info,debug,trace cargo run

Screenshots

Conclusion

If you find this exciting or want to try something new in Rust/Qt, here is a list of crates related to Rust + Qt development.

  1. qmetaobject
  2. Rust Qt Binding Generattor
  3. ki18n
  4. kconfig
  5. rust-qt-template