Russian Qt Forum

Qt => Дополнительные компоненты => Тема начата: Mixolap от Ноябрь 29, 2006, 17:14



Название: Русский язык в QScintilla 2
Отправлено: Mixolap от Ноябрь 29, 2006, 17:14
Вместо русских букв вопросики, подскажите плз как поправить (WinXP)


Название: Русский язык в QScintilla 2
Отправлено: Mikhail от Ноябрь 29, 2006, 18:04
QsciScintilla * scintilla = new QsciScintilla( parent );
scintilla->setUtf8(true)


Название: Русский язык в QScintilla 2
Отправлено: Mixolap от Ноябрь 29, 2006, 18:21
Пребольшое спасибо, а есть ли там возможность подсветки текущей линии?
И еще, когда делаю свой класс, наследуя его от QsciScintilla, у меня программа вываливается, не успев добраться до main-а, может в курсе в чем тут проблема?


Название: Русский язык в QScintilla 2
Отправлено: Mikhail от Ноябрь 29, 2006, 19:31
Подсветка текущей линии:

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

Цитировать

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

Посоветовать без кода не могу.
А зачем наследовать QsciScintilla?


Название: Русский язык в QScintilla 2
Отправлено: Mixolap от Ноябрь 29, 2006, 20:13
Ну вообще класс, теперь наследование точно не нужно :)
Блин, как я сие мог в мануале пропустить, буду внимательнее вкуривать.
Премного благодарен.

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

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


Название: Русский язык в QScintilla 2
Отправлено: Mikhail от Ноябрь 29, 2006, 20:23
Пока разбираюсь.
Если поймешь раньше отпишись

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

 А возможность должна быть.
Эта функциональность доступна в Notepad++, который в качестве редактора использует Scintilla.


Название: Русский язык в QScintilla 2
Отправлено: Mixolap от Ноябрь 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);

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


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

 скобки подсвечиваются, Подскажи если знаешь как изменить цвет выделения


Название: Русский язык в QScintilla 2
Отправлено: Mixolap от Ноябрь 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.


Название: Русский язык в QScintilla 2
Отправлено: Mikhail от Ноябрь 29, 2006, 20:56
Для нумерации строк используется нулевое поле.
Всего их кажется пять.
поле 1 которое ты используеш для нумерации строк используется для маркеров
с которыми я пока не разобрался.
Если знаешь как установить маркер в требуемой строке (например в строке с ошибкой компиляции) - подскажи.


Название: Русский язык в QScintilla 2
Отправлено: Mixolap от Ноябрь 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