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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Наследник QLineEdit и доступ к QLineEditPrivate  (Прочитано 4516 раз)
mugabe
Гость
« : Май 12, 2009, 16:13 »

Хочу подменить lineEdit в QComboBox.
Задача - подсветить синаксис во время набора. Т.е. надо переопределить paintEvent.
Полностью переписывать QLineEdit не хочется, к тому же в результате получится двойная реализация одних и тех же функций, таких как мигание курсора. Хотелось бы взять скопипастить QLineEdit::paintEvent и внести необходимые изменения.
Но проблема в том, что внутренности QLineEdit::paintEvent сильно завязаны на QLineEditPrivate.

Есть ли какая-то возможность обратиться к QLineEditPrivate?

Пробовал сделать Q_D(QLineEdit) - начинает ругаться на Q_DECLARE_PRIVATE(QLineEdit), что, в принципе, логично.

Есть способы это обойти, может быть каким-то образом напроситься в друзья к QLineEdit? Улыбающийся
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Май 12, 2009, 16:26 »

Тут виджет другой, но может натолкнёт на мысль
Записан

Юра.
mugabe
Гость
« Ответ #2 : Май 12, 2009, 16:32 »

Как обычно решить получается самостоятельно почти сразу после того, как обратился за помощью :\

В общем достаточно запихнуть Q_DECLARE_PRIVATE(QLineEdit) в область private своего LineEdit-а и приватный класс становится доступным.

Тему оставляю - может пригодится кому.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #3 : Май 12, 2009, 17:02 »

завтра приватную часть поменяют, и будешь всё переделвать.
Записан

Юра.
igor_bogomolov
Гость
« Ответ #4 : Май 12, 2009, 17:16 »

Есть еще такой способ
setLineEditTextFormathttp
Записан
ритт
Гость
« Ответ #5 : Май 20, 2009, 18:11 »

mugabe, советую изучить код по последней ссылке - там рабочая подсветка синтаксиса, но с некоторыми ограничениями.

примерно тогда же я закидывал Троллям таску об отвязке QLineEdit::paintEvent от приватной части, но не смог придумать весомого аргумента в пользу того, что это не прихоть, а необходимость (ведь на самом деле это была прихоть Улыбающийся ) - если есть желание продолжить дискуссию, могу переслать переписку с саппортом...

/* зы. а LineEdit я ещё не допилил и пока что забросил */
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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