Секреты и интересные возможности Qt |
Здравствуйте, гость ( Вход | Регистрация )
Секреты и интересные возможности Qt |
Litkevich Yuriy |
16.3.2009, 12:12
Сообщение
#31
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
SABROG |
20.3.2009, 15:02
Сообщение
#32
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
Немножко заморочился на тему создания и извлечения zip архивов средствами Qt. Посмотреть что из этого вышло можно тут http://vingrad.ru/blogs/sabrog/2009/03/20/...s-zip-arhivami/
|
|
|
AD |
20.3.2009, 15:12
Сообщение
#33
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
SABROG, напиши, пожалуйста, тут о тех двух функциях-то!
|
|
|
SABROG |
20.3.2009, 15:15
Сообщение
#34
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
SABROG, напиши, пожалуйста, тут о тех двух функциях-то! В Qt 4.5 если классы, которые используются для поддержки Open Document Format, среди них есть классы для работы с .zip архивами. В документации о них не слова и классы по сути только для внутреннего использования. Нас интересуют классы QZipReader и QZipWriter. Чтобы можно было их использовать надо: - в .pro файле добавить это:
- в хедеры прописать пути:
Использовать так: //распаковка архивов
С сжатием сложнее, но принцип такой:
Сообщение отредактировал SABROG - 20.3.2009, 15:27 |
|
|
AD |
20.3.2009, 16:40
Сообщение
#35
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Да нет! Я про аналоги getenv!!!!
|
|
|
SABROG |
20.3.2009, 17:11
Сообщение
#36
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
В Qt есть недокументированные кроссплатформменные функции qgetenv() и qputenv() для получения и установки переменных окружения.
Описаны в <QtCore/QtGlobal> Использовать на свой страх и риск. Сообщение отредактировал SABROG - 20.3.2009, 17:15 |
|
|
Litkevich Yuriy |
20.3.2009, 17:43
Сообщение
#37
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
SABROG |
20.3.2009, 22:06
Сообщение
#38
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
qconfig_myconfig.zip ( 826 байт )
Кол-во скачиваний: 570
Для тех кто помешан на обезжиривании Qt. Вместе с исходниками Qt для мобильных систем поставляется утилита QConfig, которая позволяет отключать возможности (features). При этом утилита сама смотрит за зависимостями и отключает зависимые компоненты. Дистрибутивы для win и *nix идут без этой утилиты. Поэтому, чтобы воспользоваться данной утилитой нам понадобится скачать общий дистрибутив Qt для всех платформ. Сделать это можно в .torrent репозитории http://dist.trolltech.com/torrents/ Качать надо это: http://dist.trolltech.com/torrents/qt-all-...5.0.zip.torrent Сразу скажу, что у меня уже стояла Qt собранная статически, поэтому я просто зашел в папку $(QTDIR)/tools/qconfig и вбил заветные команды:
После этого я получил в папке release готовую утилиту. Я её залил сюда (3Mb): http://filebeam.com/b143c6b3d9bb05976e6ab1ea2fed7756 Далее запускаем её, не важно откуда. Появится диалог выбора файла. Надо выбрать файл $(QTDIR)/src/corelib/global/qfeatures.txt Затем снимаем галки, которые нам не нужны и сохраняем в файл $(QTDIR)/src/corelib/global/qconfig-НАШЕИМЯ.h Расположение и имя файла должно быть именно таким иначе он не найдется. Затем используем не документированный для виндовых/линуксовых дистрибутивов, но существующий ключ -qconfig таким образом:
Дальше собираем как обычно. В аттаче я прикрепил свою конфигурацию, не уверен, что она оптимальная или правильная. Проверил на примере /examples/widgets/calculator. В обычном статике размер: 7,14 МБ (7 494 656 байт) C теми же ключами но после редактирования через qconfig: 6,19 МБ (6 496 256 байт) UPX сжал exe файл до : 2,34 МБ (2 463 232 байт) Для сравнения обычная (shared) сборка, сумма всех файлов в папке: 13,1 МБ (13 779 036 байт) --- Я пошел дальше в своих изысканиях и решил собрать Qt с оптимизацией по размеру. Отредактировал файл $QTDIR/mkspecs/win32-g++/qmake.conf и заменил строчку: Цитата QMAKE_CFLAGS_RELEASE = -O2 на Цитата QMAKE_CFLAGS_RELEASE = -Os Проделал ту же операцию, что и раньше. Теперь пример calculator.exe сжатый UPX'ом весит: 1,99 МБ (2 095 104 байт) Хоть и в ущерб скорости (оптимизация убрала выравнивание страниц), зато в пользу размера. Еще бы, есть разница 13Мб и 1,99Мб ? --- Немного погуглив нашел еще пару ключей для компилятора, которые прописал тоже в qmake.conf Цитата -fmerge-all-constants -fno-default-inline -fno-inline -ffunction-sections -fdata-sections -Wl,--gc-sections Новый рекорд: 1,86 МБ (1 951 744 байт) Но есть побочный эффект. Простейшие примеры линкуются около минуты. В общем экспериментируйте. Сообщение отредактировал SABROG - 22.3.2009, 20:59 |
|
|
Litkevich Yuriy |
20.3.2009, 22:21
Сообщение
#39
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
любопытно
|
|
|
SABROG |
22.3.2009, 16:28
Сообщение
#40
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
|
|
|
Текстовая версия | Сейчас: 22.11.2024, 19:58 |