将Qt Design Studio QML与PySide2一起使用

2024-09-27 23:17:32 发布

您现在位置:Python中文网/ 问答频道 /正文

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

项目名称是我在Qt设计工作室中创建的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

main.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")
    }
}

Tags: 文件frompyimportviewuidemomain
2条回答

使用PyQt和Qt设计器创建UI

对于ppl在谷歌搜索中的绊脚石,我得到了一个主窗口来正确显示:

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 {
    }
  }
}

相关问题 更多 >

    热门问题