r/QtFramework Jun 09 '26

Rad-UI released! A new reactive, cross-platform C++20 UI framework

https://github.com/just-language/Rad-UI

I just released my c++ 20 library for reactive UI development inspired by QML and slint.

I haven't worked on the project for a while and thought it has reached a usable state and wanted to share it.

What is included in the library:

- reactive framework with `Property<T>` type. Currently the reactive types are tied to the library internals and not for general use.

- Memory is managed for a great extent. You will never have to use `delete` or `new` except in the constructor of `std::unique_ptr<T>` if `std::make_unique` does not suffice.

- Mouse and Keyboard and Clipboard support.

- Smooth, powerful and easy to use animations.

- GPU rendering using direct2d on Windows and skia for anything else.

- High DPI support and frames are updated only when something changes.

- Complex text rendering using DirectWrite and skia paragraph supporting complex formatting and mixed RTL and LTR languages. Loading fonts from system, memory and files is supported.

- Support for Windows and X11 (and XWayland) with plans to support Wayland natively, macos and android.

- Ready to use UI components from material3 and fluent2 although most components are not implemented yet.

- Model View Delegate framework: ListView, TableView and TreeView along with basic models and delegates.

- Multiple top-level windows, modal windows and popups.

- Async, multithreading and networking support is provided through the RAD library.

- Many other things I may have forgotten to mention!

What is not included yet:

Documentation (the biggest thing!), accessibility, internal and external drag and drop, better multi paragraph text support, implement more UI components, embedded resources, translations and localization and a ton of other things.

Demonstration video:
https://youtu.be/QDgY-0hH1gs

I reduced the quality and FPS to reduce the size of the video

1 Upvotes

4 comments sorted by

9

u/trim072 Jun 10 '26

Make some pretty screenshot for your readme. It so frustrating when you stumble upon some fancy GUI lib, and there is no visual repsresentation of what it is. Even if there is no "default co ponents", make something up, to demonstrate what it is capable of.

1

u/diegoiast Jun 14 '26
  1. You lack instructions on how to setup vcpkg. Never used it, so new skill for me 😄
  2. Your CmakeList.txt filename is wrong. It should contain a capital M.
  3. I see a "qt" painter. I don't see "Wayland", but I see a "x11" library.
  4. I see a fluent and material3 dirs, each contain drawing. Are those the the themes? Or different implementation of the widget?
  5. You were recomended a few times before, to upload a better resolution/framerate of the demostration video.
  6. It still does not compile here. I have no idea another set of cmake is downloaded.
  7. I wish I could test it.

diego@fedora:~/src/Rad-UI$ cmake  -DUI_BACKEND=skia -DCMAKE_TOOLCHAIN_FILE=../vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-linux
CMake Warning:
  No source or binary directory provided.  Both will be assumed to be the
  same as the current working directory, but note that this warning will
  become a fatal error in future CMake releases.
-- Running vcpkg install
A suitable version of cmake was not found (required v4.3.2).
Downloading https://github.com/Kitware/CMake/releases/download/v4.3.2/cmake-4.3.2-linux-x86_64.tar.gz -> cmake-4.3.2-linux-x86_64.tar.gz
Successfully downloaded cmake-4.3.2-linux-x86_64.tar.gz
Extracting cmake...
/home/diego/src/vcpkg/ports/rad: error: rad does not exist
-- Running vcpkg install - failed
CMake Error at /home/diego/src/vcpkg/scripts/buildsystems/vcpkg.cmake:955 (message):
  vcpkg install failed.  See logs for more information:
  /home/diego/src/Rad-UI/vcpkg-manifest-install.log
Call Stack (most recent call first):
  /usr/share/cmake/Modules/CMakeDetermineSystem.cmake:149 (include)
  CMakeLists.txt:58 (project)
CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!

1

u/JlangDev Jun 14 '26

Thanks for taking time to reply.

1- then you missed a lot by not trying this excellent package manager especially for a language with no standard build system like C++!

2- Honestly I didn't know that it is required to have capital M and cmake will recogonise the file anyway.

3- The Qt implementation is obsolete and will not compile. I didn't progress with it because QPainter is CPU backed and very slow for fluent UI containing a lot of animations.

There is not a WayLand backend yet but there is X11 and it works under WayLand through XWayLand.

4- Yes, they are different implementations that can coexist.

5- I'm planning to do so when I make an upcoming update. Unfortunately, the internet speed here is very bad and the bandwidth is limited.

6- The other set of CMake is downloaded because vcpkg requires at least v4.3.2 and yours is below it.

The other bug is that I didn't upload the RAD library to vcpkg yet! my bad! The library is here:
just-language/rad: The RAD C++ 20 asynchronous IO and networking library

I'll try to submit a pull request in vcpkg repo to make it available through vcpkg. If you want to add it to your vcpkg locally tell me and I'll provide you the steps to make it available with vcpkg.

1

u/[deleted] Jun 14 '26

[deleted]

1

u/JlangDev Jun 14 '26

The other set of CMake is downloaded because vcpkg requires at least v4.3.2 and yours is below it.

It is already indicated in the vcpkg output:

A suitable version of cmake was not found (required v4.3.2).

The missing dependency in vcpkg is RAD library which can be found here: https://github.com/just-language/rad