1

它没有显示任何弹出窗口或错误。它默默地无所事事。

QStringList dictionary;
dictionary << "exampleOne" << "Two" << "blah" << "hello";
dictionary.sort();
QCompleter * completer = new QCompleter(dictionary,ui->inRawText);
completer->setModel(new QStringListModel(dictionary, completer));
completer->setCompletionMode(QCompleter::PopupCompletion);
completer->setCaseSensitivity(Qt::CaseInsensitive);
completer->setWidget(ui->inRawText);

inRawText 是 QTextEdit 类的实例。

编辑:不发出信号(激活并突出显示)。

编辑:仅当我调用 complete() 插槽时才会显示弹出窗口。这很愚蠢,我必须重新实现 QTextEdit 类,它是 keyPressEvent 处理程序......该死的 QT......

4

1 回答 1

0

使 a 成为 aQTextEdit的父级QCompleter仅影响所有权层次结构,并不意味着QCompleter必须开始处理QTextEdit.

实际上,QCompleter它不能作为 的自动完成器QTextEdit,它只适用于QLineEditandQComboBox并且您使用setCompleter()这两个类的功能来启动自动完成。

阅读文档以QCompleter获取更多信息。

于 2014-03-22T20:48:37.297 回答