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
  опции профиля:
сообщение 1.9.2014, 16:29
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 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
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 19.4.2024, 14:34