无法将 QtQuick Controls 2 与 Pyside 2 一起使用

Posted

技术标签:

【中文标题】无法将 QtQuick Controls 2 与 Pyside 2 一起使用【英文标题】:Unable to use QtQuick Controls 2 with Pyside 2 【发布时间】:2017-12-28 17:59:50 【问题描述】:

我已经设置好了:

Python 3.5.3 虚拟环境 编译了 Pyside 2 提交 fafd92f428d51bdd56c90a73149c441773dd9155(因为最近的 2 个提交存在缺少 qrandomgenerator 文件的问题)。

使用 Qt 5.9.3、MSVC2015 x64 和 cmake 3.10.1 完成编译

我正在尝试设置它以开始使用 QML,更具体地说是 Material Style。但是,当我运行我的应用程序时,如果 QML 导入 QtQuick.Controls 2.0 或更高版本,engine.rootObjects() 似乎返回一个空列表。我可以导入 QtQuick.Controls 版本 1.0 - 1.5。编译时我错过了什么吗?还是我的代码有问题?

代码如下:

Python

import sys
from PySide2 import QtGui
from PySide2 import QtQml

app = QtGui.QGuiApplication(sys.argv)
engine = QtQml.QQmlApplicationEngine()
ctx = engine.rootContext()
ctx.setContextProperty("qmlapp", engine)
engine.load('view.qml')
win = engine.rootObjects()[0]
win.show()
sys.exit(app.exec_())

QML

import QtQuick 2.9
import QtQuick.Controls 2.2

ApplicationWindow 

我从Qt Quick Controls 2 的文档中获取了这些版本号。

【问题讨论】:

我在linux中使用的是PySide2 2.0.0,你的代码执行正确。 我怀疑它应该,但这意味着我的 pyside 2 包必须缺少一些东西。但是我不确定如何获取模块中可用的 QML 导入列表,或者更重要的是如何将所需的导入模块中 【参考方案1】:

我发现问题是我的路径中需要 QT bin。运行以下命令纠正了问题:

(venv35) C:\my\project\dir\>set PATH=C:\Qt\5.9.3\msvc2015_64\bin;%PATH%

【讨论】:

以上是关于无法将 QtQuick Controls 2 与 Pyside 2 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

QT5:未找到 QTQuick.Controls 2.12 版

如何在 TableView QtQuick.Controls 2.4 中实现 TableView QtQuick.Controls 1.4 的 Selectable future

QtQuick.Controls 2.2 中的 QML 组合框样式问题

QML QtQuick.Controls 2.2 Combobox 没有 selectByMouse;啥是替代方案?

如何运行导入 QtQuick2.0 和 QtQuick.Controls 1.1 的应用程序

QML:带有图标的 QtQuick.Controls 选项卡