我恰好有一个组合框和附加到它的QSortFilterProxyModel,它们按字母顺序排列项目。QSortFilterProxyModel:检索原始模型的项目或索引
原始模型(QComboBox)例如为:
“C”, “A”, “d”, “B”
已排序的模型(QSortFilterProxyModel)变为:
“A”, “B”, “C”, “d”
如果现在选择排序的组合框内 “d” 时,信号QCOM boBox :: currentIndexChanged(int)给我索引= 3,但我想检索索引相对于原始模型可能,所以索引= 2。
另一方面,我也想“原型” - > setCurrentIndex(idx)。但是,如果我定义了idx = 2,在组合框中突出显示的行显示“C”,因为视图已排序。
我该如何解决这个问题?
@LucaDanieli是。当然'QSortFilterProxyModel' **是一个''QAbstractItemModel'! –
QSortFilterProxyModel :: index(row,0)是否有可能仅在ComboBox中选择行时才起作用?我试图mComboBox-> setCurrentIndex(proxyIndex)通过QModelIndex mIndex = mProxyModel->索引(modelIndex,0); QModelIndex proxyRow = mProxyModel-> mapFromSource(mIndex); int proxyIndex = proxyRow.row();不幸的是,int proxyIndex是“-1”。不过,ModelIndex是正确的 –
模型上的方法将独立于视图所做的工作。所以选择并不重要。请更新这个问题,如果你有一些代码要问。 –