-1

I am trying to get the id of the record in the model from a QComboboxwith findData(index), but when select a item, it retunrs -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) 
}

感谢您的时间,任何帮助将不胜感激。

4

2 回答 2

1

检查QComboBox 文档;从findData描述中引用:

返回包含给定数据的项目的索引

index作为“给定数据”传递的位置。但是,索引已经是组合框中的索引。但是您显然不是在寻找索引(因为您已经有了一个)。

我怀疑您实际上想调用该itemData方法?这将检索与给定索引的元素关联的数据。

于 2013-10-21T10:46:54.667 回答
1

您必须使用分配给组合框的模型,使用索引来查找它: modAnfi->data(modAnfi->index( index, 0));

于 2013-10-22T10:09:59.857 回答