-1

QComboboxモデル内のレコードの IDを findData(index) で取得しようとしていますが、項目を選択すると -1 が返されます。別のプロジェクトで動作していましたが、動作しないのはこれで 2 つ目です。これが私のコードです:

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「与えられたデータ」として渡す場所。ただし、 index は既にコンボボックスのインデックスです。ただし、明らかにインデックスを探しているわけではありません (既にインデックスがあるため)。

itemData代わりに実際にメソッドを呼び出したいと思いますか? これにより、特定のインデックスの要素に関連付けられたデータが取得されます。

于 2013-10-21T10:46:54.667 に答える