Russian Qt Forum
Ноябрь 22, 2024, 23:03
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Разное
>
Говорилка
>
Почему вы используете/не используете Qt (windows-платформа)
Страниц: [
1
]
2
3
4
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Почему вы используете/не используете Qt (windows-платформа) (Прочитано 30771 раз)
marbius
Гость
Почему вы используете/не используете Qt (windows-платформа)
«
:
Май 23, 2011, 16:56 »
Собственно сабж.
Желающие могут не читать следующее "повествование", в котором описана мотивация данного вопроса.
Вопрос у меня возник из-за того, что однажды мне потребовалось по быстрому накидать с виду простенькое приложение: база данных, некоторые диалоги ввода и запроса данных, вывод статистики по накопленным данным в виде простых табличных отчетов.
Казалось бы, ничего сложного в этом нет. Но опыт работы с Qt у меня в большей мере академический, нежели профессионально-практический, т.е. я хотя и могу написать небольшое приложение на Qt, но это пока для меня всего лишь этап обучения. В меньшей мере я знаком с работой с базами данных, вернее, мануалы читал и более-менее понимаю, что к чему, но практически не писал еще ни одного приложения с поддержкой БД.
Т.к. изначально приложение подразумевалось как локальное без поддержки сетевой БД, то встал вопрос, на чем "писать" БД?
Ответ для меня казался очевидным: SQLITE, но не тут-то было - чтобы научить SQLITE обрабатывать регистронезависимый LIKE нужно было чуть напрячь силы, что было проделано и решено, но осадок-то остался )) Еще одна ложка дегтя: у меня уже была некая база данных на SQLITE, которая использовалась в другом ПО, написанном под win то ли на Delphi, то ли на Bulder'е; но как выяснилось данные в ней были "забиты" в win1251 и отказывались нормально (без кракозябрб) отображаться стандартными средствами Qt без применения "костылей" и/или перекодировок исходной БД. С небольшими потугами и это было преодолено, но опять-таки осадок остался...
Позже было решено вообще перенести БД на firebird-embed под win: опять танцы с бубном в несколько часов по сборке более-менее работающего QIBASE, но не понравились некоторые ограничения на LGPL QIBASE. Вроде ничего страшного, но все же...
Дошло дело до отчетов: "поплясал" с ncreport пару дней, но в итоге все заработало. Не понравилась его "медлительность".
В итоге более-менее работоспособное приложение было готово и пришел черед его дистрибуции )) Под "дистрибуцией" я здесь подразумеваю перенос бинарников на рабочее место, где приложение должно было работать. И, о ужас, дистрибутив занимал почти 40 МБ: ладно, сетка локальная, 100 Мбит/с, размер не существенный, можно поставить всем пользователям.
Тут также не понравился еще один момент(на win-платформе): если даже на компьютере были библиотеки Qt, но другой версии, приложение отказывается работать, т.о. простой перенос бинарника приложения не гарантирует его работу, приходится тянуть все зависимые библиотеки... А, библиотеки не получается разместить единовременно в директории windows или system(32) - могут отказаться работать потенциально имеющиеся другие приложения Qt, если таковые были, а библиотеки Qt для них были установлены в эти системные директории. Значит приходится таскать весь груз зависимостей с дистрибуцией...
Ради эксперимента, запустил "старый-добрый" Delphi и выполнил то же самое приложение суммарно не более чем за 1 сутки времени размером "дистрибуции" 8 МБ в едином exe-файле (ну, плюс файл БД и sqlite3.dll) с поддержкой таблиц SQLITE, заведомо заполненных в кодировке win1251; с поддержкой freereport; против двух недель "танцев" и около 40 МБ зависимых библиотек (само приложение занимало чуть более 2 МБ) на Qt.
Вот и возник вопрос, а почему все же вы используете Qt?
Чем вас привлекает Qt, кроме "Write Once, Deploy Anywhere" и, для некоторых, "LGLP"?
Просто лично для себя я сделал вывод: если надо очень скоро написать приложение под win, то лучше все же использовать "старый-добрый" Delphi (Builder) с его(их) кучей "готовых" решений...
Всем, кто читал столько много букв: огромное спасибо.
Всем ответившим: заведомо спасибо.
P.S. данный пост не подстрекает к холивару
«
Последнее редактирование: Май 23, 2011, 17:01 от µarbius
»
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Почему вы используете/не используете Qt (windows-платформа)
«
Ответ #1 :
Май 23, 2011, 16:58 »
Было
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Почему вы используете/не используете Qt (windows-платформа)
«
Ответ #2 :
Май 23, 2011, 18:00 »
никогда не работал с базами данных, на qt разобрался за 20 минут, все прекрасно работало.
а можно вопрос - а дельфи у вас купленная?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Почему вы используете/не используете Qt (windows-платформа)
«
Ответ #3 :
Май 23, 2011, 18:26 »
Цитата: µarbius от Май 23, 2011, 16:56
Вот и возник вопрос, а почему все же вы используете Qt?
Чем вас привлекает Qt, кроме "Write Once, Deploy Anywhere" и, для некоторых, "LGLP"?
Просто лично для себя я сделал вывод: если надо очень скоро написать приложение под win, то лучше все же использовать "старый-добрый" Delphi (Builder) с его(их) кучей "готовых" решений...
Всем, кто читал столько много букв: огромное спасибо.
Всем ответившим: заведомо спасибо.
P.S. данный пост не подстрекает к холивару
Никогда не работал с БД, но Ваш вопрос достаточно общий. Дело в том что Вы судите с высоты достигнутого опыта - и, не в обиду Вам, Ваша оценка необъективна. Да если я "в своей нише", если задача типовая (в смысле половина и больше мне хорошо знакома), то вопрос только в том "какая оплата в час" - и все. Но совершенно неправильно обобщать этот подход.- когда о задаче ничего (или почти ничего) неизвестно - никаких "заведомых" преимуществ у Вас не будет, и неизвестно что легче выучить - "ту" систему или "эту". Ясно только что учить все равно придется
Записан
LisandreL
Птица говорун
Offline
Сообщений: 984
Надо улыбаться
Re: Почему вы используете/не используете Qt (windows-платформа)
«
Ответ #4 :
Май 24, 2011, 01:42 »
Цитата: µarbius от Май 23, 2011, 16:56
против двух недель "танцев" и около 40 МБ зависимых библиотек (само приложение занимало чуть более 2 МБ) на Qt
Это ж вы чего туда набрали?
4.7.3-mingw: mingwm10.dll+libgcc_s_dw2-1.dll+QtCore4.dll+QtGui4.dll+QtSql4.dll+qsqlite4.dll = 12,5Мб. Откуда ещё 27,5?
Если размер дистрибутива так уж важен - один раз разобраться со статической компиляцией (да, один раз прийдётся потратить время, чтобы разобраться). Получите независимый exe, который после
upx
'а будет весить едва ли больше 4Мб.
А вообще, если не нужна кроссплатформенность и важен малый объём исполняемого кода - имеет смысл смотреть в строну дотнэтов.
Цитата: µarbius от Май 23, 2011, 16:56
Ради эксперимента, запустил "старый-добрый" Delphi и выполнил то же самое приложение суммарно не более чем за 1 сутки времени размером "дистрибуции" 8 МБ в едином exe-файле (ну, плюс файл БД и sqlite3.dll) с поддержкой таблиц SQLITE, заведомо заполненных в кодировке win1251
Да, тут библиотеки Qt не сдюжили. Правда такое использование, как я вам уже объяснял, противоречит документации по SQLite.
Ради интереса предлагаю взять правильную базу с SQLite с произвольной допустимой кодировкой (utf-8 или любой из utf-16) и посмотреть насколько удобно будет с ней общаться средствами той сами Delphi библиотеки (результата не знаю - может это там и предусмотренно, но что-то мне подсказывает...).
Цитата: µarbius от Май 23, 2011, 16:56
Ради эксперимента, запустил "старый-добрый" Delphi и выполнил то же самое приложение суммарно не более чем за 1 сутки времени размером
1) Писать на том языке, среде, фреймворке, который знаешь всегда проще и быстрее.
2) Задача в данном случае была довольно специфичная, как я уже выше писал.
Цитата: µarbius от Май 23, 2011, 16:56
Просто лично для себя я сделал вывод: если надо очень скоро написать приложение под win, то лучше все же использовать "старый-добрый" Delphi (Builder) с его(их) кучей "готовых" решений...
Обобщу: если надо очень скоро написать приложение, то лучше все же использовать то, чем владеешь.
Теперь про Qt: главный козырь, как ни крути кроссплатформенность. Кроме того библиотека включает в себя довольно большое число хорошо продуманных и реализованных классов. Хорошая справка опять же.
Ну и бесплатность, как ни крути иногда немаловажна, хотя в нашей стране и Делфи у многих «бесплатная».
Есть у Qt и минусы:
- встречаются (хоть и не слишком часто) баги и несоответствие с описанием (не то, чтобы конкуренты этим не страдали, но всё же...)
- обратная сторона кроссплатформенности - если нужно что-то, чего нет в Qt встаёт вопрос: то ли реализовывать апишками, восстанавливая потом, если нужно, кроссплатформенность дефайнами, то ли искать сторонние кросплатформенные реализации и разбираться, подходит оно тебе или нет.
Кроме того, в Qt Creator'е:
- не очень удобный дизайнер, а на небольших разрешениях экрана - вообще непригодный к использованию,
- с gdb под win нередки проблемы с сегфолтами и падениями.
«
Последнее редактирование: Май 24, 2011, 13:16 от LisandreL
»
Записан
voral
Гость
Re: Почему вы используете/не используете Qt (windows-платформа)
«
Ответ #5 :
Май 24, 2011, 11:11 »
Цитата: µarbius от Май 23, 2011, 16:56
Собственно сабж.
У меня есть честно купленный Visual Studio 2005. Сейчас я его снес. Основная причина кроссплатформенность.
Вопрос с кодировкой решается вовсе не костылями. А вполне нормальными директивами выбора нужной кодировки. Не?
Цитата: µarbius от Май 23, 2011, 16:56
размером "дистрибуции" 8 МБ в едином exe-файле (ну, плюс файл БД и sqlite3.dll) с поддержкой таблиц SQLITE, заведомо заполненных в кодировке win1251; с поддержкой freereport; против двух недель "танцев" и около 40 МБ зависимых библиотек (само приложение занимало чуть более 2 МБ) на Qt.
Ну так. А что вы хотели? Программа на делфи использует стандартные виндовые библиотеки. А наличие Qtшных библиотек
в замен
виндовых нормальная цена за кроссплатформенность. Будет у вас 2 или больше программы на Qt. И этот минус сойдет на нет практически совсем.
Цитата: µarbius от Май 23, 2011, 16:56
Вот и возник вопрос, а почему все же вы используете Qt?
Чем вас привлекает Qt, кроме "Write Once, Deploy Anywhere" и, для некоторых, "LGLP"?
Есть много удобных классов которых мне не хватало в MFC и delphi. (По сравнению с delphi еще и язык мне больше нравится)
Цитата: µarbius от Май 23, 2011, 16:56
ение под win, то лучше все же использовать "старый-добрый" Delphi (Builder) с его(их) кучей "готовых" решений...
Qtшная куча лично мне показалась более объемной (в смысле полезного объема)
Записан
BRE
Гость
Re: Почему вы используете/не используете Qt (windows-платформа)
«
Ответ #6 :
Май 24, 2011, 12:08 »
Как в тему захожу, так в глаза бросается. Исправь цифры.
Цитата: LisandreL от Май 24, 2011, 01:42
4.7.3-mingw: mingwm10.dll+libgcc_s_dw2-1.dll+QtCore4.dll+QtGui4.dll+QtSql4.dll+qsqlite4.dll = 12,5Мб. Откуда ещё 37,5?
40,0 - 12,5 = ?
Записан
zenden
Гость
Re: Почему вы используете/не используете Qt (windows-платформа)
«
Ответ #7 :
Май 24, 2011, 12:56 »
msvc 2008
QMAKE_CFLAGS_RELEASE = -O1 -Os -MT
configure.exe -fast -static -release -qt-zlib -no-gif -no-stl -no-libpng -no-libmng -no-libjpeg -no-libtiff -no-exceptions -no-webkit -no-rtti -no-phonon -no-qt3support -no-multimedia -no-native-gestures -no-plugin-manifests -no-openssl -no-script -no-scripttools -no-declarative -no-style-plastique -no-style-cleanlooks -no-style-motif -no-style-cde -no-style-windowsce -no-style-windowsmobile -no-accessibility -no-opengl -no-openvg -no-dbus
К тому же вырезано всё что только можно в qfeatures.h
Полученный размер стат. сборки с использованием QtCore + QtGui + QtNetwork составляет 3,9 МБ (1.6 Мегабайт в архиве 7zip)..
Всё равно не могу понять, откуда берутся эти мегабайты. Было бы интересно найти улититу, которая может показать какие классы и методы попадают в конечный бинарник.
«
Последнее редактирование: Май 24, 2011, 13:04 от zenden
»
Записан
alexman
Гость
Re: Почему вы используете/не используете Qt (windows-платформа)
«
Ответ #8 :
Май 24, 2011, 13:16 »
Цитата: LisandreL от Май 24, 2011, 01:42
Цитата: µarbius от Май 23, 2011, 16:56
против двух недель "танцев" и около 40 МБ зависимых библиотек (само приложение занимало чуть более 2 МБ) на Qt
Это ж вы чего туда набрали?
4.7.3-mingw: mingwm10.dll+libgcc_s_dw2-1.dll+QtCore4.dll+QtGui4.dll+QtSql4.dll+qsqlite4.dll = 12,5Мб. Откуда ещё 37,5?
27.5
Сорри за флуд, позже увидел пост BRE!
«
Последнее редактирование: Май 24, 2011, 13:17 от alexman
»
Записан
Wlad_C
Гость
Re: Почему вы используете/не используете Qt (windows-платформа)
«
Ответ #9 :
Май 24, 2011, 14:06 »
Долгое время программировал в Билдере. Года три назад попались мне исходные тексты на Qt. Заинтересовало. Как раз и время свободное было. Решил попробовать сам что-нибудь написать. Приведу далеко не все аргументы, а только те, которые в то время заставили меня распрощаться Билдером:
1. Лайоуты. Разве Вам не приходилось встречаться с тем фактом, что Ваша форма на экранах с разным разрешением и разными настройками Винды отображается неправильно (не помещается весь текст, компоненты куда-то уехали и т.д.)? Да, эта проблема решается, но кодировать надо самому. А на сложной форме, да не одной, это еще тот геморрой! Лайоуты снимают эту проблему без каких-либо затрат с моей стороны!
2. Сигналы и слоты позволяют решить много проблем и сильно облегчают жизнь. Например, отделить формы от расчетной части. В Билдере я это тоже делал, но уж больно некрасиво это получалось (если вообще получалось).
3. Локализация. В Qt есть механизм локализации, и нечего самому придумывать не надо!
4. Как говорилось выше, библиотека Qt ОЧЕНЬ ПРОДУМАНА. И многие мелочи, что мне приходилось в компонентах Билдера дописывать из раза в раз самому, в Qt уже реализованы в классах.
Поначалу, пока не освоился с Qt, маленькие программки (однодневки) тоже быстрее писались на Билдере. Но со временем надобность в нем отпала и я Билдер снес!
Да, среда программирования у Билдера мощная, но Qt Creator не стоит на месте а быстро развивается. И на сегодняшний день в нем есть фишки которых мне не хватало в Билдере. Например, показать где используется. Очень полезная вещь, особенно когда правишь программу написанную год назад, и уже подзабыл многие связи в ней. А вообще спорить о IDE можно, но бесполезно. Все определяется привычкой.
Записан
marbius
Гость
Re: Почему вы используете/не используете Qt (windows-платформа)
«
Ответ #10 :
Май 24, 2011, 17:09 »
Для интересующихся "размером": ну откуда вы взяли, что именно этими библиотеками ограничивается набор? я про это вроде не говорил, считайте
+ QtWebKit4.dll ~16 МБ - пришлось поиспользовать для генерации отчетов
+ QtScript4.dll ~2 МБ - пришлось поиспользовать для генерации отчетов
+ firebird-embedded ~8 МБ
- sqlite.dll
и далее
+ приложение (с графическими ресурсами) ~2 МБ
+ база ~4 МБ
ну, если этап округления кого и обидел, то извините. соль-то не в этом, правильно я собрал (или даже написал) свое приложение, или нет; даже не в том, что я не доволен, что приходится таскать груз зависимостей; и даже не в моей субъективной оценке...
Суть топика не "унизить" Qt, а узнать мотивации людей, почему они используют Qt в своей работе?
Лично мне многое нравится в Qt, но есть один тормозящий меня момент: не очень развитый набор именно готовых GUI виджетов и компонентов, поэтому в большинстве своем приходится писать велосипед, хоть и потенциально кросс-платформенный, но велосипед, что ЛИЧНО МЕНЯ не устраивает в написании, как выразился Wlad_C, однодневок. Я не спорю, опыт у меня не шибко велик, о чем и было написано изначально.
«
Последнее редактирование: Май 24, 2011, 17:11 от µarbius
»
Записан
marbius
Гость
Re: Почему вы используете/не используете Qt (windows-платформа)
«
Ответ #11 :
Май 24, 2011, 17:44 »
Цитата: voral от Май 24, 2011, 11:11
Вопрос с кодировкой решается вовсе не костылями. А вполне нормальными директивами выбора нужной кодировки. Не?
буду очень признателен, если поможете обойти методом отличным от того, который предложил LisandreL в топике
http://www.prog.org.ru/topic_18057_0.html
Записан
marbius
Гость
Re: Почему вы используете/не используете Qt (windows-платформа)
«
Ответ #12 :
Май 24, 2011, 18:08 »
Цитата: Авварон от Май 23, 2011, 18:00
а можно вопрос - а дельфи у вас купленная?
я отвечу вопросом на вопрос, можно? А Вам зачем?
Цитата: LisandreL от Май 24, 2011, 01:42
Если размер дистрибутива так уж важен - один раз разобраться со статической компиляцией (да, один раз прийдётся потратить время, чтобы разобраться). Получите независимый exe, который после
upx
'а будет весить едва ли больше 4Мб.
Думаю, ответ вы поймете?
«
Последнее редактирование: Май 24, 2011, 18:12 от µarbius
»
Записан
alexman
Гость
Re: Почему вы используете/не используете Qt (windows-платформа)
«
Ответ #13 :
Май 24, 2011, 18:13 »
В qt реализованы все необходимые виджеты. Если нужны какие то спец-ые - пишите сами...для этих целей все реализовано. Тем более всем не угодишь: для одно один набор контролов очевиден для включения, для другого другой!
Записан
voral
Гость
Re: Почему вы используете/не используете Qt (windows-платформа)
«
Ответ #14 :
Май 24, 2011, 18:39 »
Цитата: µarbius от Май 24, 2011, 17:44
Цитата: voral от Май 24, 2011, 11:11
Вопрос с кодировкой решается вовсе не костылями. А вполне нормальными директивами выбора нужной кодировки. Не?
буду очень признателен, если поможете обойти методом отличным от того, который предложил LisandreL в топике
http://www.prog.org.ru/topic_18057_0.html
А вы не пробовали отправить базе:
Цитировать
SET names cp1251
?
У меня нет под рукой подходящей заготовки. Ка то давно цеплялся к базе firebird (к сожалению все было ради теста qt и код не сохранил) - могу ошибаться но именно так и делал.
«
Последнее редактирование: Май 24, 2011, 18:42 от voral
»
Записан
Страниц: [
1
]
2
3
4
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...