Название: Наследник 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 я ещё не допилил и пока что забросил */ |