Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Динамический UI
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
JohnZ
Всем Здавствовать !

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

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

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

Заранее благодарен за помощь.
JohnZ
Вопросы закрыты. Разобрался.
Админ, удали тему, плз ...
Litkevich Yuriy
если не затруднит опиши своё резюме по данной теме, вдруг у кого-то возникнут такие же вопросы.
JohnZ
Ок.

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. 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-ом пока такого не замечено,
но у него свои "мухи" ...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2019 IPS, Inc.