QComboBox :: findData () всегда возвращает -1

Я пытаюсь получить идентификатор записи в модели от QCombobox с помощью findData (index), но при выборе элемента он возвращает -1. Он работал в другом проекте, но это второй, который не работает. Вот мой код:

modAnfi = new QSqlTableModel(this);
modAnfi->setQuery("SELECT id, (nombres || ' ' || apellidos) as Nombre, nombres, apellidos FROM tbPersonas WHERE activo=1");
comboAnfitrion->setModel(modAnfi);
comboAnfitrion->setModelColumn(1);
comboAnfitrion->setEditable(true);
comboAnfitrion->completer()->setCompletionMode(QCompleter::PopupCompletion);

connect(comboAnfitrion, SIGNAL(currentIndexChanged(int)), this, SLOT(currentIndexChangeAnfitrion(int)));

а также:

void controlReg::currentIndexChangeAnfitrion(int index)
{

qDebug() << comboAnfitrion->findData(index); // -1
qDebug()<< comboAnfitrion->itemData(1); // QVariant(Invalid)
}

Спасибо за ваше время, любая помощь будет оценена.

-1

Решение

Вы должны использовать модель, которую вы назначаете для comboBox, используйте индекс для поиска:
modAnfi->data(modAnfi->index( index, 0));

1

Другие решения

Проверить Документация QComboBox; от findData описание, цитирование:

Возвращает индекс элемента, содержащего данные

Где вы проходите index как «данные данные». Тем не менее, индекс уже является индексом в выпадающем списке. Но вы явно не ищете индекс (так как у вас уже есть индекс).

Я подозреваю, что вы действительно хотите позвонить itemData метод вместо? Это позволит получить данные, связанные с элементом для данного индекса.

1

По вопросам рекламы [email protected]