如何将 Qt 与 Rust 一起使用?

Posted

技术标签:

【中文标题】如何将 Qt 与 Rust 一起使用?【英文标题】:How to use Qt with Rust? 【发布时间】:2017-03-15 17:24:45 【问题描述】:

今天我决定学习 Rust,我想知道将 Qt 与 Rust 结合使用有多难。第一个谷歌结果给了我qt.rs,所以我决定试一试。

我的 Qt 安装位于 C:\Qt\5.7\Qt5Config.cmake 位于 C:\Qt\5.7\msvc2015_64\lib\cmake\Qt5

我试过的是:

git clone https://github.com/kitech/qt.inline.git cd qt.inline && mkdir build cmake -D Qt5_DIR=C:\Qt\5.7\msvc2015_64\lib\cmake\Qt5 -G "Sublime Text 2 - Ninja" .. cmake -D Qt5Core_DIR=C:\\Qt\\5.7\\msvc2015_64\\lib\\cmake\\Qt5Core -D Qt5Gui_DIR=C:\\Qt\\5.7\\msvc2015_64\\lib\\cmake\\Qt5Gui -D Qt5Widgets_DIR=C:\\Qt\\5.7\\msvc2015_64\\lib\\cmake\\Qt5Widgets -G "Sublime Text 2 - Ninja" .. cmake -D CMAKE_PREFIX_PATH=C:\\Qt\\5.7\\msvc2015_64\\ -G "Sublime Text 2 - Ninja" ..

但结果是一堆错误:

我还尝试过其他 Qt 文件夹,例如 C:\Qt\5.7\msvc2015_64\lib\cmakeC:\Qt\5.7\msvc2015_64\libC:\Qt\5.7\msvc2015_64C:\Qt\5.7\C:\Qt,运气一样。

我该如何解决这个问题?

Rust 相当于 Python 的 pyqt/pyside 是什么?有没有“官方”的 Qt Rust 包?

【问题讨论】:

【参考方案1】:

qt.inline 依赖于 Qt。假设您在系统中安装了 Qt,错误提示您没有指定 Qt 的安装位置。

在使用find_package(Qt5 ...) 的“普通”项目中,您会这样做:

cmake .. -D Qt5_DIR=/path/to/qt -G "Sublime Text 2 - Ninja"

/path/to/qt 是 Qt 安装中包含Qt5Config.cmake 的目录。鉴于 <prefix> 是 Qt 安装的根目录,这应该类似于 <prefix>/lib/cmake/Qt5

qt.inline 更具体,ask explicitly 用于 Qt 的特定模块,即Qt5CoreQt5GuiQt5Widgets。所以对这些模块使用相同的过程:

cmake -D Qt5Core_DIR=/path/to/Qt5CoreConfig.cmake
      -D Qt5Gui_DIR=/path/to/Qt5GuiConfig.cmake
      -D Qt5Widgets_DIR=/path/to/Qt5WidgetsConfig.cmake
      ...

【讨论】:

@BPL 我编辑了我的答案。只需将路径替换为 C:/Qt/5.7/msvc2015_64/lib/cmake/Qt5Core 即可获得 Qt5Core_DIR,以此类推 Qt5Gui_DIRQt5Widgets_DIR。总是更喜欢路径中的“/”而不是本机的“\”。 CMake 可能会将它们解释为转义字符。 您的尝试cmake -D Qt5_DIR=C:/Qt/5.7/msvc2015_64/lib/cmake/Qt5 -D Qt5Gui_DIR=C:/Qt/5.7/msvc2015_64/lib/cmake/Qt5Gui -D Qt5Widgets_DIR=C:/Qt/5.7/msvc2015_64/lib/cmake/Qt5Widgets -G "Sublime Text 2 - Ninja" .. 是正确的。 qt.inline 格式不正确:src/core/mod.cmake 中列出的文件 qversionnumber.cxx 确实丢失了。仓库中有一个没有列出该文件的分支:在 git bash 中使用 git checkout qt5.5 将您的仓库更改为此分支 这应该是为 Qt5.5 制作的分支,而您拥有 Qt5.7:它可能会失败。如果失败,返回master分支,删除src/core/mod.cmake中添加qversionnumber.cxx的行(希望之后不再报错),或者安装Qt5.5 我已经分叉了这个项目here。在评论了一些不存在的自动生成的包装文件并评论了一些特定的编译器内容后,我使用cmake -D Qt5Core_DIR=C:\\Qt\\5.7\\msvc2015_64\\lib\\cmake\\Qt5Core -D Qt5Gui_DIR=C:\\Qt\\5.7\\msvc2015_64\\lib\\cmake\\Qt5Gui -D Qt5Widgets_DIR=C:\\Qt\\5.7\\msvc2015_64\\lib\\cmake\\Qt5Widg‌​ets -G "Sublime Text 2 - Ninja" .. 获得了 Sublime 项目。当我尝试构建它时出现问题,这是log 我看了对应的代码以及cmake项目是如何配置的。似乎 qt.inline 与视觉不兼容:/【参考方案2】:

qt.rs 好像很多年都没有更新了。

建议查看Ritual 而不是GitHub

【讨论】:

以上是关于如何将 Qt 与 Rust 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Qt 属性与自定义类一起使用?

如何将嵌套 Vecs 与 wasm-bindgen 一起使用?

如何将 Windows SDK 与 Qt Creator 一起使用

如何将 pimpl 成语与 Qt 和 QObject 的子类一起使用

如何将我的静态 Qt 构建与 Creator 一起使用?

将 pdf.js 与 Qt5.8 一起使用