我有一个代表 s 列表的QAbstractListModel
调用。每个人都有一个财产。模型的作用很简单,即一个实例。SerialPortList
SerialPort
SerialPort
QList<int> supportedBaudRates
SerialPortList
display
QVariant::fromValue(mSerialPorts[i])
SerialPort
我以这样的方式显示我的列表模型Repeater
(高度简化):
SerialPortList {
id: ports
}
Column {
Repeater {
id: portList
// ...
model: ports
Text { text: model.display.portName }
ComboBox {
model: model.display.supportedBaudRates
// ...
}
}
}
也就是说,一个串行端口名称列表,然后是一个带有支持的波特率的组合框。
奇怪的是,虽然文本显示得很好,但显然组合框model.display
是未定义的。如果我用这个替换组合框:
Text {
text: model.display.supportedBaudRates.join(" ")
}
然后它会产生您期望的结果!
这里发生了什么?我只能假设它model
在内部被重新定义,ComboBox
所以它认为它指的是它自己,但我已经尝试了各种portList.model.display.supportedBaudRates
我能想到的 id 引用,但它们都不起作用。
编辑
卡卡杜指出,不能用 aQList<int>
作为模型。有点烦人,但我已经把它改成了QStringList
你显然可以使用的。可悲的是,错误仍然相同。
编辑 2
我更改了model:
toComboBox
并model: { console.log("model: " + model); }
打印了1
,这让我确信它model
指的是它自己。