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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Динамическая загрузка формы и ее сохранение  (Прочитано 9512 раз)
aliks-os
Гость
« : Июль 05, 2011, 14:45 »

Делаю загрузку виджета (созданного через дизайнер) и тут же ее сохранение

Код:
    QFile file(settings.value("/Settings/pathForm","").toString()+"/"+filename);
    QFormBuilder/*QUiLoader*/ loader;
    file.open(QFile::ReadOnly);
    QWidget *formWidget = loader.load(&file, this);

    QFormBuilder builder;
    QFile file1("c:\myWidget.ui");
    file1.open(QFile::WriteOnly);
    builder.save(&file1,formWidget);
    file1.close();

    file.close();

После таких манипуляций, вновь созданный файл невозможно открыть в дизайнере (происходит ошибка и дизайнер падает).
Подскажите где ошибка и может у кого есть наработки по сохранению виджета/формы в файл.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Июль 05, 2011, 14:47 »

А что из себя представляет получившийся файл? Приложи оба файла к мообщению.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
aliks-os
Гость
« Ответ #2 : Июль 05, 2011, 14:50 »

http://ifolder.ru/24543782

там архив из 2 файлов
Записан
aliks-os
Гость
« Ответ #3 : Июль 05, 2011, 14:57 »

У меня оба файла валят дизайнер.

Странно....
outwarehouse.ui - открывается без проблем, его создавал в именно в дизайнере.
myWidget.ui - создался при помощи указанного кода и он у меня валит дизайнер
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #4 : Июль 05, 2011, 15:03 »

Не, я ошибся. Валит myWidget.ui. Скорее всего из-за того, что в нем много лишней фигни. Возможно, баг Дизайнера. А в приложение получается myWidget.ui подгрузить?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
aliks-os
Гость
« Ответ #5 : Июль 05, 2011, 15:07 »

Не, я ошибся. Валит myWidget.ui. Скорее всего из-за того, что в нем много лишней фигни. Возможно, баг Дизайнера. А в приложение получается myWidget.ui подгрузить?

Нет, тоже валит. То что там лишней фигни, я тоже заметил  Непонимающий
Не хотелось бы вручную заниматься вставкой XML, хотел воспользоваться готовым решением
« Последнее редактирование: Июль 05, 2011, 15:09 от aliks-os » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #6 : Июль 05, 2011, 15:14 »

На багтрекере пробовал искать? Версия Qt какая?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
aliks-os
Гость
« Ответ #7 : Июль 05, 2011, 15:15 »

На багтрекере пробовал искать? Версия Qt какая?

не пробовал, версия 4.7.3
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #8 : Июль 05, 2011, 15:25 »

Ничего на бактрекере не нашел такого. Советую создать там таску по этому поводу.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
aliks-os
Гость
« Ответ #9 : Июль 05, 2011, 15:35 »

уже создал, правда мой английский страдает...
http://bugreports.qt.nokia.com/browse/QTBUG-13683
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #10 : Июль 05, 2011, 15:49 »

Что-то по ссылке совсем не то.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
aliks-os
Гость
« Ответ #11 : Июль 05, 2011, 16:08 »

А такая ссылка?
http://bugreports.qt.nokia.com/browse/QTBUG-20260
Не ту ссылку дал

Вот такой ответ мне дали на багтреккере

Won't fix. Formbuilder::save() saves the internal children of the QTableWidget (scrollbars, etc), which cause problems when reloaded.
« Последнее редактирование: Июль 05, 2011, 16:11 от aliks-os » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #12 : Июль 05, 2011, 16:20 »

Прикольно. А нафига оно вообще тогда нужно?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
aliks-os
Гость
« Ответ #13 : Июль 05, 2011, 16:22 »

И я о том же...они наверное думают что одни лейбы хранить на форме будут
Записан
iks
Гость
« Ответ #14 : Июль 06, 2011, 21:50 »

Если правильно понял конечную цель данных манипуляций, это сохранить .ui с внесеными изменениями.
Честно говоря не сталкивался с данной проблеммой, но заинтересовал способ решения, мне подумалось пройти сразу через
Код
C++ (Qt)
QFile::copy("pathForm/outwarehouse.ui", "pathForm/myWidget.ui");
и уже копию открыть и работать с ней но как пока не нашел рабочего кода, пробовал
Код
C++ (Qt)
QFile file("pathForm/myWidget.ui");
file.open(QIODevice::ReadWrite);
QWidget *formWidget = QUiLoader().load(&file, this);
но это не то конечно.
Хотя копия само собой в дизайнере нормально открывается.
« Последнее редактирование: Июль 06, 2011, 21:59 от iks » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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