DEV Community

Ayush
Ayush

Posted on • Originally published at programmershideaway.xyz on

Creating Rust/QML Project using Templates

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

Enter fullscreen mode Exit fullscreen mode

With vendored OpenSSL

cargo install cargo-generate --features vendored-openssl

Enter fullscreen mode Exit fullscreen mode

Arch Linux

pacman -S cargo-generate

Enter fullscreen mode Exit fullscreen mode

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

Enter fullscreen mode Exit fullscreen mode

Generate Project

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

Enter fullscreen mode Exit fullscreen mode

Run Project

We will also set RUST_LOG variable for enabling logs.

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

Enter fullscreen mode Exit fullscreen mode

Screenshots

Screenshot

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

Enter fullscreen mode Exit fullscreen mode

Arch-based

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

Enter fullscreen mode Exit fullscreen mode

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

Enter fullscreen mode Exit fullscreen mode

Generate Project

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

Enter fullscreen mode Exit fullscreen mode

Run Project

We will also set RUST_LOG variable for enabling logs.

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

Enter fullscreen mode Exit fullscreen mode

Screenshots

Screenshot

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

Top comments (0)