Russian Qt Forum
Ноябрь 25, 2024, 08:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Completer для плагина TextEditor для Qt Creator  (Прочитано 1530 раз)
Anarion
Гость
« : Сентябрь 18, 2015, 09:36 »

Здравствуйте.

Пока опишу вопрос без кода, на уровне теории. Есть желание использовать 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 для перехода между функциями/процедурами.

Поэтому вопрос такой: подскажите, пожалуйста, каким образом лучше сделать такой комплитер? И возможно ли вообще...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.157 секунд. Запросов: 21.