从qml到python获取委托对象名
我有一个ListView,在它里面有一个代理矩形,在这个矩形里面有一个图像对象。所以我想将图像对象名放入python PyQt5文件中,并为每个图像设置不同的源从qml到python获取委托对象名,python,pyqt,qml,pyqt5,Python,Pyqt,Qml,Pyqt5,我有一个ListView,在它里面有一个代理矩形,在这个矩形里面有一个图像对象。所以我想将图像对象名放入python PyQt5文件中,并为每个图像设置不同的源 ListView { model: 12 /*that mean that i have 12 images!*/ delegate: Rectangle { Image { objectName: "img" source: "file:///C:/Lo
ListView {
model: 12 /*that mean that i have 12 images!*/
delegate: Rectangle {
Image {
objectName: "img"
source: "file:///C:/LocalDir/Project/img/11.png"
}
}
}
def set_property():
self.context = QQuickWidget()
self.context.setSource(QUrl().fromLocalFile("QML-code.qml"))
self.rootObj = context.rootObject()
img = self.rootObj.findChild("img")
if img:
img.setProperty("source", path)
# and so on...but i don't know how to get img delegate
您走错了路,可以在不通知GUI的情况下删除和创建代理,因此单独访问它们不是正确的做法。视图中的策略是通过模型传递信息,在这种情况下,当您将获得python中图像路径的信息时,建议基于QAbstractListModel创建一个模型: main.py
从PyQt5导入QtCore、QtGui、QtWidgets、QtQuickWidgets
类ImageModel(QtCore.QAbstractListModel):
PathRole=QtCore.Qt.UserRole+1
def uuu init uuu(self,parent=None):
超级(ImageModel,self)。\uuuuu初始化\uuuuuuu(父级)
self._路径=[]
def addPath(自身,路径):
self.beginInsertRows(
QtCore.QModelIndex(),self.rowCount(),self.rowCount()
)
self.\u paths.append(路径)
self.endInsertRows()
def行数(self,parent=QtCore.QModelIndex()):
返回len(自身路径)
def数据(self,index,role=QtCore.Qt.DisplayRole):
如果role==ImageModel.PathRole和0您走错了路,那么可以在不通知GUI的情况下删除和创建代理,因此单独访问它们不是正确的做法。视图中的策略是通过模型传递信息,在这种情况下,当您将获得python中图像路径的信息时,建议基于QAbstractListModel创建一个模型:
main.py
从PyQt5导入QtCore、QtGui、QtWidgets、QtQuickWidgets
类ImageModel(QtCore.QAbstractListModel):
PathRole=QtCore.Qt.UserRole+1
def uuu init uuu(self,parent=None):
超级(ImageModel,self)。\uuuuu初始化\uuuuuuu(父级)
self._路径=[]
def addPath(自身,路径):
self.beginInsertRows(
QtCore.QModelIndex(),self.rowCount(),self.rowCount()
)
self.\u paths.append(路径)
self.endInsertRows()
def行数(self,parent=QtCore.QModelIndex()):
返回len(自身路径)
def数据(self,index,role=QtCore.Qt.DisplayRole):
如果role==ImageModel.PathRole和0谢谢@EylanEsc,但是如果我不使用QAbstractListModel,你能提供一些答案吗?@dimatronciu如果你检查我的代码,有两个答案:1)使用QAbstractListModel和2)使用QStandardintemModel谢谢@EylanEsc,但是如果我不使用QAbstractListModel,你能提供一些答案吗?@dimatronciu如果你检查我的代码,有两个答案:1)使用QAbstractListModel,2)使用QStandardItemModel
import QtQuick 2.12
Rectangle{
width: 640
height: 480
ListView {
anchors.fill: parent
model: pathmodel
delegate: Rectangle {
width: 100
height: 100
Image {
anchors.fill: parent
source: Qt.resolvedUrl(model.path)
}
}
}
}