gpt4 book ai didi

python - 我想将 Qt QML Combobox 设置为 PyQt5 对象属性

转载 作者:太空狗 更新时间:2023-10-30 01:28:45 27 4
gpt4 key购买 nike

我正在编写一个小程序,它使用 Qt5 QML 作为 GUI 层和 Python3-PyQt5 来实现数据模型。

我现在想在 QML 中显示一个 ComboBox 并将其模型设置为枚举列表。我如何将枚举导出为 python 类的属性,以便我可以在 QML 中引用它?

我最好用 QML 写这个:

ComboBox {
model: mymodel.car_manufacturers
onCurrentIndexChanged: mymodel.selected_manufacturer = currentIndex
}

最佳答案

这是我的解决方案,对我来说已经足够好了。在 python 代码中,我有以下内容:

class CarManufacturers(enum.Enum):
BMW, Mercedes = range(2)

mfcChanged = pyqtSignal()

@pyqtProperty('QStringList', constant=True)
def carmanufacturers(self):
return [mfc.name for mfc in CarManufacturers]

@pyqtProperty('QString', notify=mfcChanged)
def mfc(self):
return str(CarManufacturers[self._mfc].value)

@modus.setter
def mfc(self, mfc):
print('mfc changed to %s' % mfc)
if self._mfc != CarManufacturers(int(mfc)).name:
self._mfc = CarManufacturers(int(mfc)).name
self.mfcChanged.emit()

在 QML 中我有:

ComboBox {
model: myModel.carmanufacturers
currentIndex: myModel.mfc
onCurrentIndexChanged: myModel.mfc = currentIndex
}

关于python - 我想将 Qt QML Combobox 设置为 PyQt5 对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28517132/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com