Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

QtQuick interface for Rust

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
NotificationsYou must be signed in to change notification settings

cyndis/qmlrs

Repository files navigation

qmlrs -QtQuick bindings for Rust

Travis Build StatusCoverage StatusMIT licensedApache licensedcrates.io

Image of example

qmlrs allows the use of QML/QtQuick code from Rust, specifically

  • Rust code can create a QtQuick engine (QQmlApplicationEngine) with a loaded QML script
  • QML code can invoke Rust functions

…with certain limitations. The library should be safe (as in notunsafe) to use, but no promisesat this time. Reviews of the code would be welcome.

News

See theChangelog for the version history and what's waiting in master to be released.

Requirements

The library consists of a Rust part and a C++ part. The C++ part will be compiled automaticallywhen building with Cargo. You will needcmake, Qt5 and a C++ compiler that can compile Qt5 code.Your Qt5 installation should have at least the following modules: Core, Gui, Qml, Quick and Quick Controls.

If you are installing Qt5 from source, please note that passing "-noaccessibility" to the configurescript disables the qtquickcontrols module.

Usage

Add the latest version of qmlrs fromcrates.io in your project'sCargo.toml.

Example

This is the Rust code for an application allowing the calculation of factorials.You can find the corresponding QML code in theexamples directory.

#[macro_use]externcrate qmlrs;structFactorial;implFactorial{fncalculate(&self,x:i64) ->i64{(1..x+1).fold(1, |t,c| t* c)}}Q_OBJECT!{Factorial:    slotfn calculate(i64);}fnmain(){letmut engine = qmlrs::Engine::new();    engine.set_property("factorial",Factorial);    engine.load_local_file("examples/factorial_ui.qml");    engine.exec();}

To run the above example, executecargo run --example factorial in the project's root directory.

Note regarding the Qt event loop and threads

Creating anEngine automatically initializes the Qt main event loop if one doesn't already exist.At least on some operating systems, the event loop must run on the main thread. Qt will tell youif you mess up. The.exec() method on views starts the event loop. This will block the threaduntil the window is closed.

Licensing

The code in this library is dual-licensed under the MIT license and the Apache License (version 2.0).SeeLICENSE-APACHE andLICENSE-MIT for details.

About

QtQuick interface for Rust

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published

Contributors8


[8]ページ先頭

©2009-2025 Movatter.jp