Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: mugabe от Май 12, 2009, 16:13



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

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

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

Есть способы это обойти, может быть каким-то образом напроситься в друзья к QLineEdit? :)


Название: Re: Наследник QLineEdit и доступ к QLineEditPrivate
Отправлено: lit-uriy от Май 12, 2009, 16:26
Тут (http://www.prog.org.ru/topic_7795_0.html) виджет другой, но может натолкнёт на мысль


Название: Re: Наследник QLineEdit и доступ к QLineEditPrivate
Отправлено: mugabe от Май 12, 2009, 16:32
Как обычно решить получается самостоятельно почти сразу после того, как обратился за помощью :\

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

Тему оставляю - может пригодится кому.


Название: Re: Наследник QLineEdit и доступ к QLineEditPrivate
Отправлено: lit-uriy от Май 12, 2009, 17:02
завтра приватную часть поменяют, и будешь всё переделвать.


Название: Re: Наследник QLineEdit и доступ к QLineEditPrivate
Отправлено: igor_bogomolov от Май 12, 2009, 17:16
Есть еще такой способ
setLineEditTextFormathttp (http://www.prog.org.ru/index.php?topic=8514.msg47492#msg47492)


Название: Re: Наследник QLineEdit и доступ к QLineEditPrivate
Отправлено: ритт от Май 20, 2009, 18:11
mugabe, советую изучить код по последней ссылке - там рабочая подсветка синтаксиса, но с некоторыми ограничениями.

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

/* зы. а LineEdit я ещё не допилил и пока что забросил */