crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Динамический UI, QFormBuilder <--> QUiLoader ?
JohnZ
  опции профиля:
сообщение 25.8.2014, 19:31
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 139
Регистрация: 19.7.2014
Пользователь №: 4190

Спасибо сказали: 10 раз(а)




Репутация:   0  


Всем Здавствовать !

Несколько вопросов по динамическому конструированию UI.

1. Подскажите плз, какой класс построителя динамической формы
( QFormBuilder или QUiLoader ) использовать предпочтительнее ?
В первую очередь интересует минимальный р-р потребляемых ресурсов ОЗУ.

2. Как опросить загруженный файл UI на предмет содержащихся в нём виджетов и
их (динамических) атрибутов ?
Интересует поиск специфических, т.е. предопределённых атрибутов и их значений ...

Заранее благодарен за помощь.

Сообщение отредактировал JohnZ - 26.8.2014, 8:56
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
JohnZ
  опции профиля:
сообщение 29.8.2014, 23:24
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 139
Регистрация: 19.7.2014
Пользователь №: 4190

Спасибо сказали: 10 раз(а)




Репутация:   0  


Вопросы закрыты. Разобрался.
Админ, удали тему, плз ...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 1.9.2014, 9:42
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


если не затруднит опиши своё резюме по данной теме, вдруг у кого-то возникнут такие же вопросы.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
JohnZ
  опции профиля:
сообщение 1.9.2014, 16:29
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 139
Регистрация: 19.7.2014
Пользователь №: 4190

Спасибо сказали: 10 раз(а)




Репутация:   0  


Ок.

1. Работают они почти одинаково, есть небольшая разница во времени появления построенного диалога на
экране, QUiLoader чуть медленнее, но это субъективно, за-то ему нужно меньше памяти, т.к. его модуль меньше.

2. В случае, если пишете свой "Дизайнер", предпочтительнее использовать QFormBuilder, т.к. в "довесок"
к нему в модуле QT-шного Дизайнера идут класы доступа к элементам Дизайнера QT.
С ними я пока не работал, т.к. свою проблему буду решать другим способом, через "фиксированные"
алиасные имена и реализацией класса который об этих именах осведомлён :-)

3. В проектируемом диалоге формы элементы "получают" алиасные имена из конфигурации.
Подробнее о проекте в ветке "Поиск и выбор узла в QTreeView".

4. Вот реально работающий код, для просмотра формы. Загрузка из QString ...
     QString sCode;
     QModelIndex index = selectedIndexes().first();
     DomItem *item = static_cast<DomItem*>(index.internalPointer());
     sCode = item->node().toElement().text();
     QUiLoader fLoader;

     QByteArray ba = sCode.toUtf8();
     QBuffer buf(&ba);
     fpForm *Form = (fpForm *)  fLoader.load(&buf, this);
     buf.close();
     Form->initForm(sCode);

//    Form->exec();       // По вкусу :-)
      Form->show();
      return;


Сообщение отредактировал JohnZ - 1.9.2014, 16:30
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
JohnZ
  опции профиля:
сообщение 24.9.2014, 11:46
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 139
Регистрация: 19.7.2014
Пользователь №: 4190

Спасибо сказали: 10 раз(а)




Репутация:   0  


После продолжительных экспериментов.
Добавление:
к п.1. QUiLoader к ехе-шнику в добавляет примерно 1 М ( в отладочной версии)
QFormBuilder добавляет 0.2 М, т.е. с размером я ошибся, исправить
месагу не смог.
к п.2 QFormBuilder грузит диалог из файла, а если из буфера, ругается.
Причина ругани определена - ему не хватало buf.open(QIODevice::ReadOnly);
Ту-же форму QUiLoader грузит без вопросов из буфера, как указано в коде п.4.
Все эксперименты в QT 4.5.3 в XP. Позже будет тестироваться в ASP Linux 14

При загрузке формы, как оказалось, у QFormBuilder лежит большая грабля, - он неправильно
именует/создаёт класы виджетов. Т.е. к примеру, если форма в дизайнере "положена" на
QDialog, он создаёт форму почему-то на QStackedWidget :shok: соответственно правильно
её распарсить и затем создать проблематично. За QUiLoader-ом пока такого не замечено,
но у него свои "мухи" ...

Сообщение отредактировал JohnZ - 30.9.2014, 10:19
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.3.2024, 12:48