Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt GUI _ QLineEdit и подсветка синтаксиса

Автор: bobic 4.7.2008, 18:26

Доброго времени суток!

В QT есть очень удобный класс для подсветки синтаксиса - QSyntaxHighlighter - без проблем прикручивается на QTextEdit, аналогично QTExtEdit поддерживает html, и тоже проблем нет оформить подсветку в какой-либо тег. Однако стоит задача сделать то же самое с QLineEdit - а туда Highlighter уже не прикручивается, и html тоже не поддерживается. Нет ли у кого идей в каком направлении копать надо?

Автор: void* 4.7.2008, 20:49

а не проще ли просто сделать узкого размера QTextEdit? :)

Автор: bobic 4.7.2008, 21:13

Cделать узкого размера можно, но беда в том, что при нажатии enter сноска будет происходить (чего нет в LineEdit).

Автор: Red Devil 4.7.2008, 21:25

А можно сделать, чтобы не происходила.
Перехватывай нажатия enter и return и не пропускай их к обработику QTextEdit.

Автор: void* 4.7.2008, 21:35

именно, и сделай фиксированную высоту поля ввода (чтобы юзер вдруг не растянул ее и не разгадал секрета :) )

Автор: bobic 4.7.2008, 22:38

Спасибо за рекомендацию. А как побороться с пользователем, который вставит из буфера большой текст, в котором будут \n-ки? Просто заменить после вставки?

Автор: Red Devil 7.7.2008, 0:30

Да.
Например можешь по сигналу от QTextDocument - void blockCountChanged ( int newBlockCount ), если количество строк больше 1-ой получается (видишь блок - читаешь строка), получить текст, изменить и вставить обратно.

Автор: linch 20.8.2008, 14:44

А какую именно фиксированную высоту нужно делать? Ведь надо учитывать размер шрифта.
Я делал так:

setFixedHeight(fontMetrics().lineSpacing())


Но этого вроде маловато. Поэтому прибавлял сверх еще несколько пикселов. Но может быть есть способ сделать это более универсально?

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)