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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Русский язык в QScintilla 2  (Прочитано 8421 раз)
Mixolap
Гость
« : Ноябрь 29, 2006, 17:14 »

Вместо русских букв вопросики, подскажите плз как поправить (WinXP)
Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #1 : Ноябрь 29, 2006, 18:04 »

QsciScintilla * scintilla = new QsciScintilla( parent );
scintilla->setUtf8(true)
Записан
Mixolap
Гость
« Ответ #2 : Ноябрь 29, 2006, 18:21 »

Пребольшое спасибо, а есть ли там возможность подсветки текущей линии?
И еще, когда делаю свой класс, наследуя его от QsciScintilla, у меня программа вываливается, не успев добраться до main-а, может в курсе в чем тут проблема?
Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #3 : Ноябрь 29, 2006, 19:31 »

Подсветка текущей линии:

QsciScintilla * scintilla = new QsciScintilla( parent );
scintilla->setCaretLineVisible(true);

Цитировать

И еще, когда делаю свой класс, наследуя его от QsciScintilla, у меня программа вываливается, не успев добраться до main-а, может в курсе в чем тут проблема?

Посоветовать без кода не могу.
А зачем наследовать QsciScintilla?
Записан
Mixolap
Гость
« Ответ #4 : Ноябрь 29, 2006, 20:13 »

Ну вообще класс, теперь наследование точно не нужно Улыбающийся
Блин, как я сие мог в мануале пропустить, буду внимательнее вкуривать.
Премного благодарен.

добавлено спустя 15 минут:

 И последний вопрос (в мануале не нашел):
Подсветка пар begin end (для Pascal), или {} (для С++) ?
надеюсь вопрос понятен.
Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #5 : Ноябрь 29, 2006, 20:23 »

Пока разбираюсь.
Если поймешь раньше отпишись

добавлено спустя 5 минут:

 А возможность должна быть.
Эта функциональность доступна в Notepad++, который в качестве редактора использует Scintilla.
Записан
Mixolap
Гость
« Ответ #6 : Ноябрь 29, 2006, 20:28 »

Использую такой код:
   textEdit = new QsciScintilla;
   textEdit->setUtf8(true);
   textEdit->setCaretLineVisible(true);
   textEdit->setAutoIndent(true);
   textEdit->setIndentationGuides(true);
   textEdit->setBraceMatching(QsciScintilla::SloppyBraceMatch);

подсветка работает, но для {} (хорошо догадался проверить), только у меня косяк, так как пришлось в QsciScintilla добавлять язык оберон и переделывал я его с паскаля, кажись, ну короче, мне надо чтоб begin end светил, а он мне гад {} светит, вот буду репу чесать.

добавлено спустя 4 минуты:

 по ходу  

textEdit->setBraceMatching(QsciScintilla::SloppyBraceMatch);

подсвечивает скобки и границы блоков.
А знаешь как сделать нумерацию строк и свертку камментов?
Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #7 : Ноябрь 29, 2006, 20:41 »

Нумерация строк у скинтиллы уже есть, только поле нумерации не видно.
Сделай
scintilla->setMarginWidth(0, 40);
40 - ширина, для нумерации в несколько тысяч строк потребуется увеличить.
либо автоматом в зависимости от числа строк. По сигналу от скинтиллы.

 скобки подсвечиваются, Подскажи если знаешь как изменить цвет выделения
Записан
Mixolap
Гость
« Ответ #8 : Ноябрь 29, 2006, 20:52 »

Добился нумерации через:
textEdit->setMarginLineNumbers(1,true);
а видно становится после  setLexer(new QsciLexerOberon);
Цвет выделения:
textEdit->setMatchedBraceForegroundColor(QColor(255,0,0));

добавлено спустя 3 минуты:

 Может еще пригодиться
void QextScintilla::setMatchedBraceBackgroundColor (const QColor & col)

добавлено спустя 2 минуты:

 Хм, заметил, что notepad++ не поддерживает подсветку begin end.
Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #9 : Ноябрь 29, 2006, 20:56 »

Для нумерации строк используется нулевое поле.
Всего их кажется пять.
поле 1 которое ты используеш для нумерации строк используется для маркеров
с которыми я пока не разобрался.
Если знаешь как установить маркер в требуемой строке (например в строке с ошибкой компиляции) - подскажи.
Записан
Mixolap
Гость
« Ответ #10 : Ноябрь 29, 2006, 21:48 »

Маркер удалось установать на линию line так:
   textEdit->setMarginWidth(1,17);   
   textEdit->markerDefine(QsciScintilla::CircledPlus,BOOKMARK_MARKER);
   textEdit->setMarginMarkerMask (1,1<<BOOKMARK_MARKER);
   textEdit->markerAdd(line,BOOKMARK_MARKER);

добавлено спустя 39 секунд:

 BOOKMARK_MARKER установил равным 4
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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