qt - 如何实现类似于 WPF 的 IValueConverter 的功能
问题描述
在我的ListView
我有这些:
ListView{
id: listView
Layout.fillHeight: true
Layout.fillWidth: true
model: addContext.newLease.receivables
delegate: ItemDelegate{
width: parent.width
topPadding: 0
bottomPadding: 0
contentItem: RowLayout{
Text{
text: modelData.headId //mainContext.receivableHeads....name
Layout.preferredWidth: parent.width / 2
}
Text{
text: modelData.amount
horizontalAlignment: Text.AlignRight
}
PathButton{
pathData: C.minusIcon
Layout.alignment: Qt.AlignRight
hasToolTip: false
onClicked: addContext.removeReceivable(listView.currentIndex)
}
}
}
}
有了这个我有一些Layout
问题,但我稍后会问这个问题。在contentItem
第一个Text
中,我有一个数字headId
,它在其中显示该数字ListView
,modelData.headId
但我想显示该数字name
。该模型addContext.newLease.receivables,
不包含name
,它只有以下属性:
class Receivable : public QObject{
Q_OBJECT
Property(int, leaseId)
Property(int, headId)
Property(int, amount)
};
name
对应headId
于mainContext.receivableHeads
其中具有以下属性的 is:
class Head : public QObject{
Q_OBJECT
Property(int, id)
Property(int, controlId)
Property(QString, name)
Property(QString, description)
};
我想通过将of与of匹配来获得name
from 。mainContext.receivableHeads
headId
modelData
id
mainContext.receivableHeads
编辑
这个:
Q_INVOKABLE QString headName(int headId){
foreach(auto head, mvm->receivableHeads()){
if(head->id() == headId)
return head->name();
}
}
除此之外:
text: addContext.headName(modelData.headId) //modelData.headId //mainContext.receivableHeads.indexOf(modelData).name
正如Thomenson所建议的那样,有效。我receivableHeads
的列表很小,所以它是 javascript 的一个很好的候选者,是否有任何内置的 javascript 函数可以做到这一点?
好吧,我不知道这样的javascript函数:
text: {
for(var i =0; i < mainContext.receivableHeads.length; i++){
if(mainContext.receivableHeads[i].id === modelData.headId)
return mainContext.receivableHeads[i].name
}
}
也有效!
解决方案
推荐阅读
- gcc - LinuxBrew 不安装最新版本的 gcc?
- javascript - React.js 上 UseEffect 中的变量
- javascript - 用Javascript解码图像
- jenkins - 带有 jenkins + github 的 CD/CI
- django - Django-plolty-dash 错误:对于 ImportError:无法从“破折号”导入“破折号”
- reactjs - 在屏幕之间反应原生导航
- ios - 如何从设备中完全删除 iOS 应用程序,就好像它从未安装过一样?
- python - Python Gil 任务优化
- reactjs - 无法在基于反应的 spa 中使用 react-clear-cache 清除缓存
- javascript - 像这样进行 API 调用会导致性能问题吗?