Было бы неплохо если скрины бы добавили для наглядности. Есть, конечно, специ, которые взглянув на код сразу представляют картину, но я, простите, обычный смертный. Если не трудно, приложите скрины.
Когда будет достаточно кармы перенесите в блог Qt Software
Сам использую Qt понемногу… выбирал гуи когда, выбрал кьюте из-за кросплатформености… но жаль минус один есть сильный, в винде что бы работала хоть та же программа Хеллоу ворлд надо в комплекте давать ещё и библиотеку размером в метров 7… прога весит пару кб, а библиотека дофига… пожалуй это единственный минус…
В линуксе проще, там почти у всех кьюте уже установлен ^_^
Немного меньше… люди много эсперементировали с этим, пару метров максимум уменьшали, убирая всё что можно убрать, через статик и т.п., но всёравно многовато получется…
Учитывая что современные программы тащат с собой .Net, MS XML Parser 6.0, VC 2005 redistrable и т.д., то пара библиотек на 14 мегабайт (QtCore.dll и QtGui.dll) никого не пугают.
Разница не в размере самой программы, а в том, сколько пользователю качать.
Первые (.Net, MS XML Parser 6.0, VC 2005 redistrable ...) наверняка уже установлены в системе. А Qt или Gtk придется ставить.
На Яву можно рассчитывать, а вот рассчитывать на то, что пользователь будет копировать dll себе в system32 или у него стоит прога на Qt, которая их уже скопировала туда, сложно.
net и jre сейчас ставят чуть ли не по дефолту вместе с виндой, в крайнем случае пишут в системных требованиях, об установке gtk и qt должен позаботиться разработчик
Дык речь изначально шла о том, что размер инсталлера получается слишком большой для «Hello World» по сравнению с теми же net и java. Да и нет, насколько я знаю, хотя бы что-то вроде qt или gtk redistrable для винды, чтоб можно было указать в требованиях, как и нет репозиториев и менеджеров пакетов к ним, которые могли бы все зависимости вытянуть.
Я мало знаком с Qt, но вроде бы есть отдельные инсталляторы библиотеки. Так что не обязательно в каждый инсталлятор утилит типа «helloworld» вставлять всю Qt. Тем более, если у пользователя уже стоит Qt более новой версии, и с большой вероятностью она совместима.
Если все правильно слинковать, то размер слинкованных от Qt библиотек будет прямо пропорционалей количеству используемых классов. А в небольшой програмке их не может быть много.
Важнее не размер исходных файлов, а то как хорошо их можно сжать в тот же архив или установщик. А данные библиотеки все очень хорошо поддаются сжатию, раза в 1.5 — 2 точно.
давайте смотреть на вещи реально, ок? как много серьезного софта — это «проги на пару кб»?
я думаю таких нет в принципе. а чем сложнее (не в плане понимания, а плане архитектуры, количества кода и т.д.) проект, тем меньше болит голова у разработчиков о том, сколько же линкованного кода с собой потащит их продукт.
и я думаю семь метров в виде «хвостика» к 300-м мало кого заставят страдать :)
особенно с учетом всех тех приемуществ, которые получашь используя кьют.
Вы так говорите, как будто все ваши программы весят пару килобайт. Если это не очередной сиди-эджектор, то размер QT по сравнению с размером программы не так уж и сильно выделяется.
В линуксе не факт, что Qt установлен, но есть менеджер пакетов, поэтому, о том, что Qt может не оказаться можно просто забыть. Под Windows ИМХО лучшее решение — сделать инсталятор Qt и писать на оф. сайте программы «Если при запуске программы появляеся <такое-то> сообщение об ошибке, то Вам нужно скачать и применить ещё и вот этот инсталлятор.»
Немного критики, если позволите. Статья, как я понял, ориентирована на новичков. В этом случае у меня, будь я новичком, сложилось бы достаточно сумбурное представление.
«При удалении родителя автоматически удаляются все его потомки, что очень удобно» — с какой стати? В с++ такого не предусмотрено. Здесь, если Вы затронули такое поведение, вероятно, надо хотя бы кратко рассказать про класс QObject.
«На следующей строчке мы указали макрос Q_OBJECT, который указывает предпроцессору Qt что данный класс будет использовать дополнительные возможности Qt, например, систему сигналов и слотов.» — каких сигналов? каких слотов? Что это такое вообще? Далее идет краткое объяснение: «У каждого объекта Qt могут быть свои сигналы и слоты,...» опять же, что значит «каждый объект Qt»? Любой класс? Тогда это неверно. Вероятно QObject? Тогда следует все же провести краткий экскурс в этот класс.
Я согласен с данным замечанием, но если бы в данной статье я начал бы подробнее рассказывать по сигналы и слоты, она получилась бы раза в два больше. Поэтому я решил показать простой пример, а более подробно разобрать класс QObject и производные от него в следующей статье
Может быть тогда стоило изначально проектировать статью с таким учетом? То есть не упоминать о тех вещах, которые не могут быть сейчас раскрыты хотя бы для частичного понимания.
Я хотел в первой статье показать практический пример, который можно взять, скомпилировать и посмотреть что получится. А более углубленные разъяснения оставить на потом. Может быть такой подход и не совсем правильный…
Это наверное зависит от читателя. Кто-то не знает с чего начать, и скопировать-вставить-скомпилировать — это для него выход. Кто-то не может сдвинуться с места, не поняв как оно в итоге работает.
QT Creator все еще находится в состоянии беты. Когда я пытался его использовать, то столкнулся с проблемой что он использует системную локаль для отображения исходных кодов. Учитывая что я пишу на разных компьютерах с разными операционными системами и локалями, это затруднило его применение.
Хотя это, конечно, мой недочет что я его забыл :)
Кстати да, я почему-то не обратил внимание. Действительно диалог нужно удалять в данном случае. Если бы Вы его создали статически, то он бы удалялся при завершении функции main. А так удаляется только указатель.
«Он удаляется автоматически при завершении программы» — поясните, пожалуйста, ведь у диалога же нет парента в данном случае.
Так то оно так, но нужно говорить об этом в статье. Особенно в статье, которая претендует на аудиторию из новичков. Иначе данное поведение будет списано на «фичу Qt» (особенно в свете фразы «При удалении родителя автоматически удаляются все его потомки, что очень удобно») и будет делаться повсеместно.
Ну такую реализацию тоже можно было упомянуть. Ибо, вспоминая себя, как начинающего пользователя Qt — до некоторого момента я свято верил, что такие вещи как QLabel, QPushButton и прочие мелкие виджеты не могут быть никак показаны кроме как на диалоге или другом более общем виджете (QMainWindow например) :)
А почему автор забыл упомянуть об официальной IDE от Нокии — QtCreator? Для Qt это лучший выбор на сегодня, я так думаю. www.qtsoftware.com/developer/qt-creator
Отлично, спасибо! :) а если у меня есть баш-скрипт, который вызывает ffmpeg с определёнными параметрами и конвертирует видео, мжно ли к нему прикрутить такой GUI со статусбаром? Извиняюсь заранее если вопрос глупый
Для прикручивания GUI к скриптам уже давно и успешно применяется Tcl/Tk. Не тратьте время на Qt (в данном случае). Не подходит он для написания морд к скриптам.
«Hello, World!» на Qt