Это не показывает всплывающее окно или ошибку. Он молча ничего не делал.
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.
РЕДАКТИРОВАТЬ: сигналы (активированные и выделенные) не излучаются.
РЕДАКТИРОВАТЬ: всплывающее окно отображается только если я вызываю полный () слот. Это глупо, я должен переопределить класс QTextEdit и его обработчик keyPressEvent … проклятый QT …
Создание QTextEdit
родитель QCompleter
влияет только на иерархию владения, это не значит, что QCompleter
должен начать обработку текста для QTextEdit
,
По факту, QCompleter
не функционирует как автозаполнение для QTextEdit
, это работает только для QLineEdit
а также QComboBox
и вы используете setCompleter()
Функция этих двух классов для запуска автозаполнения.
Прочитайте документация QCompleter
для дополнительной информации.
Других решений пока нет …