Qt QCompleter和QListWidget作为自定义弹出问题

Qt QCompleter和QListWidget作为自定义弹出问题,qt,model,autocomplete,qcompleter,Qt,Model,Autocomplete,Qcompleter,我有一个QCompleter,它使用QPlainTextEdit()的QStringListModel: 它很好用。现在,我需要一些图标和工具提示,用于我尝试使用QListWidget作为自定义弹出窗口的每个建议: QListWidget* w = new QListWidget(); foreach(name, names) { QListWidgetItem* i = new QListWidgetItem(name); i->setIcon(/*my Icon

我有一个QCompleter,它使用QPlainTextEdit()的QStringListModel:

它很好用。现在,我需要一些图标和工具提示,用于我尝试使用QListWidget作为自定义弹出窗口的每个建议:

  QListWidget* w = new QListWidget();
  foreach(name, names) {
    QListWidgetItem* i = new QListWidgetItem(name);
    i->setIcon(/*my Icon*/);
    i->setToolTip("");
    w->addItem(i);
  }
  completer->setPopup(w);
弹出的好,就像我需要的,但完成没有更多的工作。我无法键入文本以使其过滤建议,只需按上/下键即可。
我尝试过:

  completer->setModel(w->model());
但是没有帮助
我的错误是什么,或者只是QStringListModel给了我过滤建议的能力?你有什么建议吗?

谢谢你

我主要和PyQt打交道,但都是一样的。我的语法可能不正确,但您应该使用QStandardItemModel与QStringListModel。从那里,您可以将其保留为标准弹出窗口(QListView)

比如:

QStandardItemModel* model = new QStandardItemModel();

// initialize the model
int rows = names.count();  // assuming this is a QStringList
model->setRowCount(rows);
model->setColumnCount(1);

// load the items
int row = 0;
foreach(name, names) {
    QStandardItem* item = new QStandardItem(name);
    item->setIcon(QIcon(":some/icon.png");
    item->setToolTip("some tool tip");
    model->setItem(row, 0, item);
    row++;
}

completer->setModel(model);
completer->popup()->setModel(model); // may or may not be needed
QStandardItemModel* model = new QStandardItemModel();

// initialize the model
int rows = names.count();  // assuming this is a QStringList
model->setRowCount(rows);
model->setColumnCount(1);

// load the items
int row = 0;
foreach(name, names) {
    QStandardItem* item = new QStandardItem(name);
    item->setIcon(QIcon(":some/icon.png");
    item->setToolTip("some tool tip");
    model->setItem(row, 0, item);
    row++;
}

completer->setModel(model);
completer->popup()->setModel(model); // may or may not be needed