정답을 입력하지 않고 웹을 검색 한 후 많은 도움을 얻었습니다 ... 내가 설명 할 수 있는지 보도록하겠습니다.QCompleter, 데이터베이스에서 ID를 얻는 방법
QT5를 사용하는 UI에서 작업 중이며 자동 완성 기능으로 행을 편집하고 싶습니다. 나는 Qcompleter를 사용할 수 있다는 것을 알고 있으며, 잘 작동한다. Qrypleter를 Qrypleter로 채운다. 하지만 그 분야의 ID를 알아야합니다.
예를 들어:
나는 제품 _와 PRODUCT_CODE있는 데이터베이스에 질의를하고 있어요 경우, 사용자가 prodcut의 이름을 입력하고 내가 채우 각이 없더라도, 이벤트에있는 새로운 데이터로 QCompleter 하지만 사용자가 제품을 선택하면 코드를 다른 위치에 표시하려고합니다. 물론 동일한 이름이지만 코드가 다른 두 개 이상의 제품이있을 수 있으므로 검색 후 코드를 찾을 수 없습니다.
그래서 QCompleter에는 두 개의 realted 필드가있는 방법이 있습니까?
QTableWidget을 코드가있는 숨겨진 열로 이미 만들고 (Qcompleter를 시뮬레이트하기 위해) QlineEdit의 하단에 바로 표시하려고합니다. 그러면 모양이 좋아서 작동하지만 ... 잘 모르겠다. Qcompleter와 같은 기능을 추가하는 방법, 화살표 아래쪽 화살표가 테이블로 점프하여 lineedit lostfocus 일 때 사라지게하지만, 테이블을 선택하면 사라집니다.
도움이 될 것입니다! 이것을 읽으면서 시간을내어 주셔서 감사하고 나쁜 영어에 대해 유감스럽게 생각합니다! 자동 완성 조치를 잡으려고 그런
QMap<int, QString> data;
data[0] = "Moscow";
data[1] = "London";
data[2] = "Paris";
QCompleter *completer = new QCompleter(this);
QStandardItemModel *model = new QStandardItemModel(completer);
QMapIterator<int, QString> it(data);
while (it.hasNext())
{
it.next();
int code = it.key();
QString name = it.value();
QStandardItem *item = new QStandardItem;
item->setText(name);
item->setData(code, Qt::UserRole);
model->appendRow(item);
}
completer->setModel(model);
당신이
QCompleter
에 연결
activated(const QModelIndex &index)
신호를 추가 데이터를 표시 당신이 원하는 :