Russian Qt Forum

Qt => Вопросы новичков => Тема начата: PinkPanther от Июнь 23, 2020, 12:16



Название: Статическая сборка 5.14 , сохранение юникода в файле
Отправлено: PinkPanther от Июнь 23, 2020, 12:16
Здравствуйте!
Давным-давно не пользовался Qt, и вот опять возникла необходимость... Возникло 2 вопроса общего характера.

1) Как установить/настроить Qt для создания демки, чтобы потом без проблем упаковать релиз каким-нибудь бесплатным инсталлятором и демка запустилась на других машинах? В комплекте должны быть все необходимые файлы. Подключены multimedia, sql, core и виджеты. Имеется ресурсный файл с картинками и звуками. Текущая версия Qt - 5.14.2, 64 бита, MinGW. В целях максимальной совместимости хотелось бы собрать в 32-битном виде.

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


Название: Re: Статическая сборка 5.14 , сохранение юникода в файле
Отправлено: tamplier от Июнь 23, 2020, 13:02
1) Вот настройка статической сборки - https://yourdevice.net/forum/viewtopic.php?f=19&t=1943#p2931 (https://yourdevice.net/forum/viewtopic.php?f=19&t=1943#p2931), проверял в Qt ver. 5.3 у меня работало, не знаю как будет в 5.14...
2) Не подскажу, надо интернет листать, но если погуглить, то можно много инфы на эту тему найти. Думаю в сторону этого класса надо копать - https://doc.qt.io/qt-5/qtextcodec.html (https://doc.qt.io/qt-5/qtextcodec.html)


Название: Re: Статическая сборка 5.14 , сохранение юникода в файле
Отправлено: qate от Июнь 23, 2020, 14:19
1. Ничего не надо собирать, особенно статиком, "нарушая" lgpl. Качаешь (если еще нет) 32 битный бинарник- исталлятор, ставишь, компеляешь как обычно
1.1 Собираешь дистр (либы и немного плагинов) в каталог приложения и используя Inno Setup делаешь инсталлятор



Название: Re: Статическая сборка 5.14 , сохранение юникода в файле
Отправлено: kambala от Июнь 23, 2020, 14:20
2) QTextStream setAutoDetectUnicode(true)


Название: Re: Статическая сборка 5.14 , сохранение юникода в файле
Отправлено: PinkPanther от Июнь 24, 2020, 09:29
1. Ничего не надо собирать, особенно статиком, "нарушая" lgpl. Качаешь (если еще нет) 32 битный бинарник- исталлятор, ставишь, компеляешь как обычно
1.1 Собираешь дистр (либы и немного плагинов) в каталог приложения и используя Inno Setup делаешь инсталлятор



Да, так можно. Я так делал 3 года назад с какой-то из 5-х версий, но получится пакет размером 1.5 гиг.  :( А при статической компиляции (правда, на 4-ке) получился экзешник 20 мегабайт со всеми нужными либами внутри + несколько мелких файлов.


Название: Re: Статическая сборка 5.14 , сохранение юникода в файле
Отправлено: PinkPanther от Июнь 24, 2020, 09:30
Всем спасибо за советы, пошел ковыряться...  :)


Название: Re: Статическая сборка 5.14 , сохранение юникода в файле
Отправлено: tamplier от Июнь 24, 2020, 10:57

Да, так можно. Я так делал 3 года назад с какой-то из 5-х версий, но получится пакет размером 1.5 гиг.  :( А при статической компиляции (правда, на 4-ке) получился экзешник 20 мегабайт со всеми нужными либами внутри + несколько мелких файлов.

У меня программа скомпилированная на Qt 5.3 получилась 15 Мб (программа содержит разные виджеты, диалоговые окна, есть справка, работает с БД MSSQL и большими текстовыми файлами, и т.д.)


Название: Re: Статическая сборка 5.14 , сохранение юникода в файле
Отправлено: PinkPanther от Июнь 24, 2020, 12:45
Наверное вы добавили библиотеки только тех объектов, которые были использованы в программе. У меня так много всего, что придется долго отбирать, что использовано а что нет.
В соответствии с LGPL лицензией, я, кажется, должен буду добавить к демке не только библиотеки, но и исходники Qt. Мне бы хотелось запихнуть все в один исполняемый файл. Демка не для всеобщего обозрения, а будет высылаться по запросу, в ответ на проявленный интерес. Так что вопросы о нарушении лицензии в данном случае вряд ли уместны... Демка абсолютно бесплатна, а платной версии программы не существует и вряд ли она появится раньше, чем будет куплена коммерческая версия Qt.


Название: Re: Статическая сборка 5.14 , сохранение юникода в файле
Отправлено: tux от Июнь 24, 2020, 14:57
Так что вопросы о нарушении лицензии в данном случае вряд ли уместны...
Почему? Вполне будут уместны. Они будут НЕ уместны, если вы программу используете сами, никому не показывая. А так будет вполне себе нарушение лицензии.
Мне просто интересно - зачем всем именно 1 исполняемый файл? Не проще ли сделасть инсталлятор - он заодно и избавит от вопросов "где та программа, которую я зачем то ставил на прошлой неделе?"


Название: Re: Статическая сборка 5.14 , сохранение юникода в файле
Отправлено: qate от Июнь 25, 2020, 10:11
В соответствии с LGPL лицензией, я, кажется, должен буду добавить к демке не только библиотеки, но и исходники Qt.

1. если изменений Qt самостоятельно не проводилось, то и нечего прилагать кроме ссылки на Qt
2. выбрать из всего Qt только нужные либы - это не сложно, он даже сам сакет чего ему не хватает


Название: Re: Статическая сборка 5.14 , сохранение юникода в файле
Отправлено: tamplier от Июнь 25, 2020, 12:48

Мне просто интересно - зачем всем именно 1 исполняемый файл? Не проще ли сделасть инсталлятор - он заодно и избавит от вопросов "где та программа, которую я зачем то ставил на прошлой неделе?"


Это риторический вопрос, у каждого свои причины, так же можно спросить, зачем кому-то нужны портабл версии ПО?


Название: Re: Статическая сборка 5.14 , сохранение юникода в файле
Отправлено: tamplier от Июнь 25, 2020, 12:54
Наверное вы добавили библиотеки только тех объектов, которые были использованы в программе. У меня так много всего, что придется долго отбирать, что использовано а что нет.
В соответствии с LGPL лицензией, я, кажется, должен буду добавить к демке не только библиотеки, но и исходники Qt. Мне бы хотелось запихнуть все в один исполняемый файл. Демка не для всеобщего обозрения, а будет высылаться по запросу, в ответ на проявленный интерес. Так что вопросы о нарушении лицензии в данном случае вряд ли уместны... Демка абсолютно бесплатна, а платной версии программы не существует и вряд ли она появится раньше, чем будет куплена коммерческая версия Qt.

Нет не только, я ничего не менял в добавляемых модулях, потому-что боялся, что что-нибудь не будет работать, а статическая сборка создается мягко говоря не быстро... Там было немало лишнего, что по идее можно было убрать, но как я ранее объяснил не стал этого делать, для меня не критично было сколько весит экзэшник 15 Мб, или 9 Мб... Единственное добавил модуль ms-sql, так-как мне нужен был функционал работающий с ms sql server.


Название: Re: Статическая сборка 5.14 , сохранение юникода в файле
Отправлено: PinkPanther от Июнь 30, 2020, 19:09
Подсчитал объем .dll библиотек в папке компилятора bin, в сумме 110 мегабайт. Если это все, что нужно для запуска приложения на другой машине, то супер.


Название: Re: Статическая сборка 5.14 , сохранение юникода в файле
Отправлено: kuzulis от Июнь 30, 2020, 19:30
что-то многовато


Название: Re: Статическая сборка 5.14 , сохранение юникода в файле
Отправлено: kambala от Июнь 30, 2020, 22:41
открой свой экзэшник в программе dependency walker — он покажет требуемые длл


Название: Re: Статическая сборка 5.14 , сохранение юникода в файле
Отправлено: PinkPanther от Июль 01, 2020, 11:31
Цитировать
что-то многовато

Половина в приложении не используется, остается 50.

открой свой экзэшник в программе dependency walker — он покажет требуемые длл

Спасибо, попробую!