У меня есть ComboBox и прикрепленный к нему QSortFilterProxyModel, который упорядочивает элементы по алфавиту.QSortFilterProxyModel: получить элемент или индекс исходной модели
исходная модель (QComboBox) представляет собой, например:
"С", "А", "Д", "Б"
Отсортированная модель (QSortFilterProxyModel) принимает вид:
"А", "Б", "с", "Д"
Если я теперь выбрать "D" в отсортированном ComboBox, сигнал QCOM boBox :: currentIndexChanged (int) дает мне index = 3, но мне хотелось бы получить индекс относительно исходной модели, возможно, index = 2.
С другой стороны, мне также хотелось бы «Оригинальная модель» -> setCurrentIndex (idx). Но если, если я определяю idx = 2, в comboBox подсвеченная строка показывает «C», поскольку сортировка вида сортируется.
Как это решить?
@LucaDanieli Да. И, конечно же, 'QSortFilterProxyModel' ** - это **' QAbstractItemModel'! –
Возможно ли, что QSortFilterProxyModel :: index (строка, 0) работает только в том случае, если в ComboBox выбрана строка? Я пытаюсь mComboBox-> setCurrentIndex (proxyIndex) через QModelIndex mIndex = mProxyModel-> index (modelIndex, 0); QModelIndex proxyRow = mProxyModel-> mapFromSource (mIndex); int proxyIndex = proxyRow.row(); К сожалению, int proxyIndex приходит «-1». ModelIndex, правда, правильный –
Методы на модели будут работать независимо от того, что делает представление. Поэтому выбор не имеет значения. Пожалуйста, обновите вопрос, если у вас есть код, о котором нужно спросить. –