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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [updated] Designer Plugin и последовательность установки свойств  (Прочитано 2384 раз)
ZeroTroll
Гость
« : Апрель 14, 2010, 11:56 »

Есть виджет с тремя свойствами (Q_PROPERTY).
Первое можно установить в любой момент. В случае изменения оно сбрасывает два других.
Второе можно установить только тогда, когда установлено первое. Оно в свою очередь сбрасывает третье.
Третье устанавливается только если заданы первые два.

То есть молучается некая зависимость свойств друг от друга.

Для этого виджета написан плагин дизайнера. Свойства без проблем отображаются и редактируются в Property Editor.

Порядок задания свойств в xml и в генерированном коде зависит от порядка вызыва макроса Q_PROPERTY.

Что же получается: создаю форму в designer, кидаю виджет, задаю свойства, сохраняю, использую форму в проекте, компилирую, запускаю.
В итоге в запущенном приложении все свойства установились в правильном порядке и виджет выглядит как надо.

НО! Если открыть дизайнером форму второй раз, то все свойства кроме первого сбрасываются.
Как я понял, при загрузки виджета из ui в дизайнере, он устанавливает свойства не в том порядке, в котором записано в xml.

А для меня это критично.

Как обойти эту проблему?
Записан
ZeroTroll
Гость
« Ответ #1 : Апрель 14, 2010, 12:43 »

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

Первым свойством устанавливается QPixmap из файла ресурсов.
Вторым Свойством устанавливается число, корректность установки которого зависит от первого свойства.

Запускаем designer, он вызывает метод установки первого свойства передав ему пустую картинку.
Затем вызывает метод установки второго свойства, который увидив пустую картинку не срабатывает.

После всего этого дизайнер загружает файл ресурсов и вызывает только один метод установки первого свойства. Картинка передается нормально.

Вопрос: почему дизайнер вызывает методы установки свойств до того как загружен файл ресурсов.
Вопрос второй: почему дизайнер после загрузки файла ресурсов вызывает еще раз метод установки первого свойства, как бы видя, что в первый раз накосячил...

Что делать, товарищи?
Записан
ZeroTroll
Гость
« Ответ #2 : Апрель 14, 2010, 13:47 »

Хм...

Если картинку брать не из файла ресурсов, а из файловой системы, тогда в первый раз отрабатывает нормально.

Но в любом случае происходит последовательная устапновка всех свойств в правильном порядке, и потом вызывается метод установки первого свойства (QPixmap).

И так, проблемы две:
1. При вызове метода установки свойства QPixmap фавйл ресурсов еще не загружен и картинка не досутпна.
2. После последовательной установки всех свойств еще раз (лишний раз) вызывается метод установки свойства типа QPixmap.

wtf?
Записан
ZeroTroll
Гость
« Ответ #3 : Апрель 14, 2010, 14:07 »

Сейчас в качестве теста создал еще одно свойство типа QPixmap.
Точно так же - в первый раз вызывается метод установки свойства с пустым объектом QPixmap, а во второй раз уже берез его из файла ресурсов.

Что делать не знаю.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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