繁体   English   中英

将 Qt Design Studio QML 与 PySide2 结合使用

[英]Use Qt Design Studio QML with PySide2

我是 Qt Designer Studio 的新手。 我刚刚在 Qt Design Studio 中创建了一个简单的按钮,我正在尝试将 QML 文件与 PySide2 一起使用,但出现多个导入错误。 有没有一种特定的方法可以使用 PySide2 实现 Qt Design Studio qml 文件。

项目名称是我在 Qt Design Studio 中创建的 Demo

演示项目结构:

   Demo.qml
   Demo.qmlproject
   Demo.qmlproject.qtds
   imports
   qtquickcontrols2.conf
   Screen01.ui.qml

PySide2 项目结构(main.py 文件包含代码):

   Demo.qml
   Demo.qmlproject
   Demo.qmlproject.qtds
   imports
   qtquickcontrols2.conf
   Screen01.ui.qml
   main.py

主要.py:

from PySide2.QtWidgets import QApplication, QMainWindow
from PySide2.QtQuick import QQuickView
from PySide2.QtCore import QUrl
from imports import QtQuick
app = QApplication([])
view = QQuickView()
url = QUrl("Screen01.ui.qml")
view.engine().addImportPath("imports")
view.setSource(url)
view.show()
app.exec_()

错误:

module "QtStudio3D" is not installed 
module "Qt.SafeRenderer" is not installed 

Screen01.ui.qml

import QtQuick 2.12
import Demo 1.0
import QtQuick.Controls 2.3

Rectangle {
    width: Constants.width
    height: Constants.height

    color: Constants.backgroundColor

    Button {
        id: nameButton
        x: 136
        y: 227
        text: qsTr("Button")
    }
}

使用PyQt和 Qt Designer 创建 UI

对于在这里用谷歌搜索绊倒的人,我得到了主窗口以正确显示:

import sys
import os

from PySide2.QtCore import Qt, QObject, Signal, Slot, Property
from PySide2.QtGui import QGuiApplication
from PySide2.QtQml import QQmlApplicationEngine

if __name__ == "__main__":
    app = QGuiApplication(sys.argv)
     
    engine = QQmlApplicationEngine()
    engine.addImportPath("imports")
    print(engine.importPathList() )
    engine.load('qttest2.qml')
    
    if not engine.rootObjects():
        sys.exit(-1)

    sys.exit(app.exec_())

文件 qttest2.qml 来自 qt design studio,包含(必须为主窗口手动编辑):

import QtQuick 2.12
import QtQuick.Layouts 1.3
import qttest2 1.0
import QtQuick.Controls 2.12

ApplicationWindow {
  visible: true
  width: 800
  height: 500
  Item {
    width: Constants.width
    height: Constants.height

    Screen01 {
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM