我目前正在开发一个包含QML的PyQt5应用程序。该应用程序从配置文件(configuration.yaml
)动态生成QML代码。然后使用信号将生成的QML代码从Python发送到QML,我正在使用Qt.createQmlObject()
示例化QML对象。
我遇到的挑战是,这个过程在主应用程序中无缝工作,但是当在Popup
元素中尝试相同的过程时,生成的QML对象在应用程序界面上不可见。值得注意的是,在执行过程中没有抛出错误。尽管通过调试验证了QML对象已成功创建,但它们不会出现在界面上。
由于TestPopup.qml
使用MainPopup.qml
作为其父节点,可能会导致问题。我已经检查了addElement()
函数,它工作正常。
产品代码:
- MainPopup.qml *
import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.3
import QtQuick.Controls.Material 2.2
Popup {
id: mainPopup
...
}
字符串
- TestPopup.qml *
import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.3
import QtQuick.Controls.Material 2.2
MainPopup {
id: testPopup
function addElement(elementId, elementString) {
Qt.createQmlObject(elementString, testPopup, elementId)
}
...
}
型
- app.py*
...
test_qml = """
import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.3
Text {
text: "Hello World!"
anchors.centerIn: parent
}
"""
test_popup = window.findChild(QObject, "testPopup")
test_popup.addElement("testID", test_qml)
...
型
1条答案
按热度按时间u5i3ibmn1#
因为,我试图在
testPopup
中添加一个元素,它是从MainPopup
扩展而来的,并且它自己是不可见的。我必须像这样将新元素添加到MainPopup
的contentItem
中:字符串