crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QLineEdit и подсветка синтаксиса, QLineEdit + QSyntaxHighlighter
Гость_bobic_*
сообщение 4.7.2008, 18:26
Сообщение #1





Гости








    


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

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

Сообщение отредактировал Litkevich Yuriy - 11.2.2009, 20:02
Причина редактирования: Подкорректировал название темы
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
void*
  опции профиля:
сообщение 4.7.2008, 20:49
Сообщение #2


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 15 раз(а)




Репутация:   3  


а не проще ли просто сделать узкого размера QTextEdit? :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_bobic_*
сообщение 4.7.2008, 21:13
Сообщение #3





Гости








    


Cделать узкого размера можно, но беда в том, что при нажатии enter сноска будет происходить (чего нет в LineEdit).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Red Devil
  опции профиля:
сообщение 4.7.2008, 21:25
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 68
Регистрация: 6.6.2008
Из: Saint-Petersburg
Пользователь №: 194

Спасибо сказали: 1 раз(а)




Репутация:   3  


А можно сделать, чтобы не происходила.
Перехватывай нажатия enter и return и не пропускай их к обработику QTextEdit.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
void*
  опции профиля:
сообщение 4.7.2008, 21:35
Сообщение #5


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 15 раз(а)




Репутация:   3  


именно, и сделай фиксированную высоту поля ввода (чтобы юзер вдруг не растянул ее и не разгадал секрета :) )
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_bobic_*
сообщение 4.7.2008, 22:38
Сообщение #6





Гости








    


Спасибо за рекомендацию. А как побороться с пользователем, который вставит из буфера большой текст, в котором будут \n-ки? Просто заменить после вставки?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Red Devil
  опции профиля:
сообщение 7.7.2008, 0:30
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 68
Регистрация: 6.6.2008
Из: Saint-Petersburg
Пользователь №: 194

Спасибо сказали: 1 раз(а)




Репутация:   3  


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

Сообщение отредактировал Red Devil - 7.7.2008, 0:31
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
linch
  опции профиля:
сообщение 20.8.2008, 14:44
Сообщение #8


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 21.7.2008
Пользователь №: 240

Спасибо сказали: 0 раз(а)




Репутация:   0  


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

setFixedHeight(fontMetrics().lineSpacing())


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

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 27.4.2018, 11:08