Здравствуйте.
Пока опишу вопрос без кода, на уровне теории. Есть желание использовать Qt Creator для редактирования НЕ C++ кода. Поставляемый с креатором плагин TextEditor вполне устраивает, но нужны некоторые дополнения, например QCompleter. Пробовал посредством своего плагина реализовать аналогично примеру
http://doc.qt.io/qt-5/qtwidgets-tools-customcompleter-example.html, но возникла проблема: при клике на элементе текст вставляется нормально в виджет с текстом, но, если выбирать элемент кнопками enter/return, таб, которые, если правильно понимаю, определены в исходниках комлитера:
bool QCompleter::eventFilter(QObject *o, QEvent *e)
{
....
case Qt::Key_Return:
case Qt::Key_Enter:
case Qt::Key_Tab:
d->popup->hide();
if (curIndex.isValid())
d->_q_complete(curIndex);
break;
....
return true;
....
}
то помимо выбранного текста вставляется также и перенос строки(если выбирать кнопкой Enter/Return), что очень мешает. Каким образом он туда попадает не удалось выяснить.
Остальную же логику комлитера хотел сделать через installEventFilter для виджета с текстом, чтобы не изменять исходники самого плагина TextEditor. Но, видимо, данный способ вообще неправильный.
Изначально была идея унаследоваться от самого реализованного в плагине виджета для редактирования TextEditor::TextEditorWidget и переопределить события там, но есть сомнения, что это получится сделать, учитывая, какие там связи внутри самого плагина. Очень не хотелось бы реализовать сам редактор с нуля, поскольку в существующем редакторе есть нужная мне подсветка синтаксиса по xml файлу определения. Помимо комплитера, планируется добавить ComboBox для перехода между функциями/процедурами.
Поэтому вопрос такой: подскажите, пожалуйста, каким образом лучше сделать такой комплитер? И возможно ли вообще...