如何在Qt中实现下拉式单词建议?

11

假设我有一个包含10个名称的QListWidget(它是隐藏的)和一个QLineEdit。现在,如果我在行编辑器中输入字母“a”,它应该显示一个下拉列表,其中包含所有以字母“A”开头的名称列表小部件中的名称。用户可以使用鼠标或键盘进行选择(因为将有垂直滚动条)。我不确定QLineEdit是否能够实现这一点。但我想知道有什么方法可以完成这个任务。

1个回答

24
你可以使用QCompleter,它提供了一种在像QLineEditQComboBox这样的小部件中进行自动完成的方法。当用户开始输入单词时,QCompleter会根据单词列表建议可能的完成方式。
来自Qt文档的示例:
QStringList wordList;
wordList << "alpha" << "omega" << "omicron" << "zeta";

QLineEdit *lineEdit = new QLineEdit(this);

QCompleter *completer = new QCompleter(wordList, this);
completer->setCaseSensitivity(Qt::CaseInsensitive);
lineEdit->setCompleter(completer);

谢谢,我会尝试并回复。 - Rajeshwar
2
你甚至不需要手动填充 QCompleter 的数据,只需通过调用 QAbstractItemView::model() 函数传递你的 QListWidget 已经在使用的模型即可。 - RobbieE
比QtProject的示例更加简单明了,而且更加直接。谢谢。 - bmahf
算了吧。QCompleter页面实际上给出了这个例子。是我犯了错。 - bmahf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接