Меню

Qt creator не работает подсветка синтаксиса

Qt creator не работает подсветка синтаксиса

Может и для других языков не пашет — я щаз просто работаю тока с С++.
Суть в том, что 99% кода парсится последней версией криэйтора как текст.
Т.е. нет ни подсказки после -> . :: ни подсветки классов, функций, полей, .
тока комментарии видятся и операторы и ключевые слова.

У кого-то было такое? Как-то чинится?

От: D_Tony
Дата: 06.04.18 13:49
Оценка:

Здравствуйте, D_Tony, Вы писали:

D_T>Может и для других языков не пашет — я щаз просто работаю тока с С++.
D_T>Суть в том, что 99% кода парсится последней версией криэйтора как текст.
D_T>Т.е. нет ни подсказки после -> . :: ни подсветки классов, функций, полей, .
D_T>тока комментарии видятся и операторы и ключевые слова.

D_T>У кого-то было такое? Как-то чинится?

из запасов нашел-поставил версию 4.2.2 — сразу всё заработало, зараспознавалось.
и куда копать, чтоб починить в это в последней версии?

От: D_Tony
Дата: 09.04.18 07:47
Оценка:

Здравствуйте, D_Tony, Вы писали:

D_T>Здравствуйте, D_Tony, Вы писали:

D_T>>Может и для других языков не пашет — я щаз просто работаю тока с С++.
D_T>>Суть в том, что 99% кода парсится последней версией криэйтора как текст.
D_T>>Т.е. нет ни подсказки после -> . :: ни подсветки классов, функций, полей, .
D_T>>тока комментарии видятся и операторы и ключевые слова.

D_T>>У кого-то было такое? Как-то чинится?

D_T>из запасов нашел-поставил версию 4.2.2 — сразу всё заработало, зараспознавалось.
D_T>и куда копать, чтоб починить в это в последней версии?

Чтож, виноват Clang — он не строит, не распознает модель кода, не анализирует код, т.е. НЕ работает. Совсем.
так то смело отключаем в плагинах всё с ним связанное и наслаждаемся полноценной работой с IDE )))

Источник

QSyntaxHighlighter: Подсветка синтаксиса в Qt

Если приложение использует текстовое поле для ввода данных, то заметно упростить жизнь пользователю может подсветка синтаксиса. Не зря этот прием весьма интенсивно используется во всех IDE и текстовых редакторах для программистов.

Читайте также:  Холодильник бирюса не работает лампочка подсветки

В Qt подсветку синтаксиса легко реализовать с помощью QSyntaxHighlighter , принцип работы которого основан на паттерне Посетитель.

Создадим приложение, которое умеет подсвечивать введенный фрагмент текста:

Заголовочный файл mainwidget.h :

Здесь мы определяем главный виджет приложения и нашу реализацию класса подсветки синтаксиса, которая наследует QSyntaxHighlighter . Обратите внимание, что в конструкторе SyntaxHighlighter передается указатель на QTextDocument , к которому и привязывается подсветка синтаксиса.

Непосредственная реализация подсветки сосредоточена в виртуальной функции highlightBlock() . А строка, которую нужно подсветить, мы задаем с помощью нашей функции setHighlightedString() .

Ключевой частью реализации является фрагмент:

Этой функции автоматически передается каждый блок текста (в простейшем случае по одной строке), в котором проводится поиск, и в случае обнаружения соответствия задается формат QTextCharFormat .

Также обратите внимание на следующую функцию:

Вызов rehighlight() обеспечивает принудительный запуск процесса подсветки синтаксиса для вновь заданной строки.

QSyntaxHighlighter позволяет реализовать и более сложные виды подсветки. Например, обрабатывать случаи многострочной подсветки, как в случаях многострочных комментариев /* . */ .

Источник

Qt Creator и неадекватная подсветка

Доброго времени суток!Обнаружил в QtCreator 3.3.1(возможно и в более старых версиях) недостатки в виде кривой подсветки синтаксиса и кривого автодополнения. Подробнее:
1) Жуткая розовая подсветка кода при некорректно поставленной закрывающей скобке: Код тут не важен, просто сэмпл). Проявляется на всех цветовых схемах.
2) Не видит, не подсвечивает, не подсказывает о некоторых типах данных, например — uint8_t. Не видит также макросы с ними связанные из stdint.h.

Сталкивался кто-нибудь с подобным? Решаемо?

Вам предлагаю задавать свои вопросы на заборе

1) Зато никогда не забудешь закрыть скобку.

2) Никогда такого не замечал. У тебя точно stdint.h вложен?

Первое вроде не баг, а фича. Таким образом отображается недетерминированная скобочка.

Предлагаю тебе пройти строго на/в блог к говноТатьянычу и больше не писать на ЛОР.

Читайте также:  Как настроить випнет координатор

1) отключи подсветку связанных скобок в настройках 2) у меня он подсвечивается как базовый тип, и с чего ты взял, что с С++11 это должен быть макрос или typedef?

1) Отключение подсветки связных помогло, правда теперь код менее читабельный
2) У вас подсвечивает u_int8_t? Он в types.h определён. Тоже подсвечивается. Чем собсно от uint8_t от u_int8_t отличается?

(2), всё подключено, код работает, но подсветки нет для целочисленных максимумов/минимумов, допустим.

Источник

Qt/C++ — Урок 058. Подсветка синтаксиса HTML кода в QTextEdit

Некоторое время назад я занимался изучением подсветки синтаксиса в QTextEdit и практиковался на подсветке для HTML кода. В результате удалось сделать довольно неплохой вариант подсветки синтаксиса HTML кода, но в связи с тем, что есть вероятность того, что этот код не будет мною применён где-нибудь, я решил выложить данный пример программного кода.

Подсветка синтаксиса HTML в QTextEdit будет выглядеть следующим образом:

Структура проекта

Проект состоит из следующих файлов:

  • HTMLExample.pro — профайл проекта;
  • main.cpp — стартовый файл проекта;
  • mainwindow.h — заголовочный файл окна приложения;
  • mainwindow.cpp — файл исходных кодов окна приложения;
  • mainwindow.ui — файл интерфейса;
  • HTMLHighLighter.h — заголовочный файл класса для подсветки HTML кода;
  • HTMLHighLighter.cpp — файл исходных кодов класса для подсветка HTML кода;

main.cpp, HTMLExample.pro — создаются по умолчанию, в mainwindow.ui добавляем только QTextEdit .

mainwindow.h

Здесь подключаем заголовочный файл HTMLHighLighter и объявляем его объект.

mainwindow.cpp

А в данном файле просто устанавливаем объект HTMLHighLighter в документ объекта QTextEdit .

HTMLHighLighter.h

Особенность подсветки синтаксиса кода или просто текста в QTextEdit заключается в том, что класс QSyntaxtHighLighter перебирает все текстовые блоки, на которые разделён текст (разбит с помощью символа перевода строки) и определяет, как подсвечивать текущий блок с самого начала в зависимости от состояния подсветки предыдущего текстового блока.

Читайте также:  Как настроить свою кисть

Естественно это необходимо реализовать. В конструкторе класса будут инициализированы правила подсветки различных частей кода и шаблоны, по которым будут определяться эти части кода. А в методе highlightBlock(const QString &text), будет реализована логика обработки текста.

HTMLHighLighter.cpp

Видео

Источник

Qt creator не работает подсветка синтаксиса

Работаю с pure javascript. Среда разработки Qt creator 2.8.1 под ubuntu 12.04.
В надежде увидеть поддержку «геттеров»:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/get и «сеттеров»:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/set загружаю в настройках подсветки последние определения для javascript.
Там такое поведение не определено, но не страшно — добавляю для тестирования новые ключевые слова «get» и «set» в javascript.xml.
Копирую изменённый javascript.xml в «/share/qtcreator/generic-highlighter», но подсветка синтаксиса из него явно не используется. В

/.config/Nokia/qtcreator/generic-highlighter других файлов нет.
С этим файлом или без него, подсветка для файлов *.js всегда одна и та же.
Полагаю, что в Qt creator есть какая-то своя встроенная приоритетная поддержка синтаксиса для javascript, так же как и для С++, и поэтому он не использует другие внешние определения. Там же происходит и анализ кода на наличие синтаксических ошибок. Но где это находится, я в документации не нашёл. Так же как и то, как это изменить.

Подскажите, кто знает.

Больше всего не устраивает, что использование геттеров и сеттеров ломает работу анализатора и подсветку переменных скрипта, выделяется как ошибка, хотя и не подписывается ошибкой. Использование директивы «use strict» игнорируется — результат тот же.

Не уверен, что проблема в определениях, думаю, что может быть и в анализаторе. Поэтому вопросов в итоге получается два:

  1. Такое поведение вызвано ошибкой в анализаторе и нужно править исходники?
  2. Внешние определения подсветки синтаксиса для javascript игнорируются?

P.S.: Для других языков (html, css, php, ruby и т.п.) загруженные и/или исправленные определения работают хорошо.

Обновление.
В новой верси 3+ это исправлено. Теперь по описанной проблеме всё работает как следует.

Источник

Adblock
detector