Название: Проблемы отрисовки плагина на родительском виджете в режиме Qt designer Отправлено: dresha48 от Январь 11, 2010, 17:14 Необходимо было отрисовать часть плагина(крестик со строкой ) на родительском окне - т.е. за пределами отрисовки плагина. Для этого создал в плагине дружественный класс для которого переопределил отрисовку.
Это в конструкторе плагина: Код Вот что в самой отрисовке (хотя это вряд ли имеет значение): Код При загрузке плагина программно и в preview дизайнера - всё отрабатывает отлично - нужный объект рисуется и в плагине и за его пределами, но в дизайнере я эту часть плагина ни разу не видел. Поскольку сталкивался уже с несколькими проблемами самого дизайнера при создании плагинов(неправильной отрисовки сложных плагинов при изменении свойств, не правильным отображением контролов при изменении QLaout, не отображением первого ресурса в конструкторе - но это всё мне удалось обойти, а с данной проблемой решения пока не вижу), то возникает вопрос это можно как то обойти, что-то я делаю не так , и действительно ли это проблема дизайнера? Использую QT 4.5.3 Ещё такой момент - когда в тестовом приложении уже созданное ui окно загружаешь с этими плагинами - так этот крестик и в дизайнере отрисовывается(причем если удалить плагин, он останется), а вот если добавишь новый - то крестика уже не будет - это почти меня убедило , что глючит дезайнер. Название: Re: Проблемы отрисовки плагина на родительском виджете в режиме QT designer Отправлено: break от Январь 13, 2010, 22:23 Цитировать на родительском окне - т.е. за пределами отрисовки плагина а вы уаерены что вообще такое можно делать?painEvent вызовется для виджета когда Qt решит что его нужно перерисовать - и решит это на сонове QRect этого плагина - и про то что вам надо за его пределами - ей все равно... То что оно вообще где-то рисуется лишь удачное совпадение событий, виджет на котором рисовался плагин отрисовался первым, а потом плагин - вот и не стерлось, попробуйте в тот момент когда у вас якобы "работает" аккуратно перекрыть другим окном часть отрисовки плагина - не перемещая это окно на область самого плагина - уверен 99 % плагин не перерисует эту чать... ИМХО - надо искать другой подход для достижения вашей цели... Название: Re: Проблемы отрисовки плагина на родительском виджете в режиме QT designer Отправлено: dresha48 от Январь 14, 2010, 11:28 Цитировать на родительском окне - т.е. за пределами отрисовки плагина а вы уаерены что вообще такое можно делать?painEvent вызовется для виджета когда Qt решит что его нужно перерисовать - и решит это на сонове QRect этого плагина - и про то что вам надо за его пределами - ей все равно... То что оно вообще где-то рисуется лишь удачное совпадение событий, виджет на котором рисовался плагин отрисовался первым, а потом плагин - вот и не стерлось, попробуйте в тот момент когда у вас якобы "работает" аккуратно перекрыть другим окном часть отрисовки плагина - не перемещая это окно на область самого плагина - уверен 99 % плагин не перерисует эту чать... ИМХО - надо искать другой подход для достижения вашей цели... Название: Re: Проблемы отрисовки плагина на родительском виджете в режиме QT designer Отправлено: break от Январь 14, 2010, 13:41 Да возможно виджеты-контейнеры отрисовывают все дочерние виджеты при отрисовке себя. Но я как то привык мыслить что виджет должен рисовать только в той области что ему пренадлежит. Кстати а когда вы пробовали перерисовка действительно вызывалась (можно для проверки поставить точку останова или ыввести в консоль), просто некоторые системы наверное могут при наложении окошка на другие элементы копировать область экрана под окошком и потом восстанавливать ее, чтобы не вызывать перерисовку окон. Но может это и не так. Можно попробовать увести область виджета за границу экрана (тогда по идее уж точно перерисовка будет вызываться)... А вообще если не секрет в чем основная задача - почему виджету надо рисовать на чужой области? Может есть более простое решение? (Да и просто интересно)
Название: Re: Проблемы отрисовки плагина на родительском виджете в режиме Qt designer Отправлено: dresha48 от Январь 14, 2010, 14:37 Точка остановы заходит норм - в отладке всё отлично работает.
Задача иметь кастом-виджеты со свойствами и стилями, которые можно расположить дизайнером-QT. Рисовать за пределами себя......ну как бы в этом плагине ничто не предвещало беды ,кроме этой как бы мелочи которую придумали в самом конце — и по другому уже никак не хотят. А сперва мы сомневались ваще возможно ли такое . В принципе всё уже подходит — только если проблема таки в дизайнере — мне надо это обосновать и заказчик будет доволен. для более полной картины приложил исходники. Название: Re: Проблемы отрисовки плагина на родительском виджете в режиме Qt designer Отправлено: dresha48 от Январь 14, 2010, 14:38 И хидер тут
|