• Вышел официальный релиз Qt 4.6.2 для Maemo

      Наконец дождались!!! Вышел официально поддерживаемый пакет Qt для Maemo с кучей исправлений.
      Что это значит ???
      Теперь можно официально разрабатывать приложения используя Qt. Причем интеграция с Maemo улучшилась и были исправлены многи ошибки и недочеты.

      Вот видео-демонстрация:


      qt.nokia.com/products/platform/maemo — ссылка на официальную страницу проекта.

      Под катом подробности.
      Читать дальше →
    • Сериализация в Qt через использование MetaObject

        Предыстория


        Собственно для чего такое могло бы понадобиться? Ведь C++ и так предоставляет достаточно гибкие возможности при сериализации в поток. Однако у меня стояла задача максимально универсализировать процесс сериализации/десериализации для многократного использования в проектах.

        Итак, было надо организовать как можно более гибкую систему (де)сериалиации в Qt, так чтобы можно было
        1. либо отнаследовавшись от базового класса и расширив его
        2. либо имея отдельный класс-сериализатор
        иметь возможность одной командой отправить поток данные из объекта.

        При этом каким-либо образом должна была быть обеспечена возможность указывать какие данные в объекте подлежат сериализации, а какие можно (и нужно) «проскипать». Аналогично должна была быть выполнена возможность при десериализации правильно установить данные и связанные с ними зависимые величины внутри объекта.
        Читать дальше →
      • Небольшой demo клиент vkontakte на QML


          Недавно я уже рассказывал о новом языке разметки, теперь же мне хотелось бы показать небольшой пример того, что можно с помощью этих инструментов сделать. В качестве демонстрации я решил написать крошечный клиент для популярной в рунете сети vkontakte.
          Данный клиент взаимодействует с контактом через userapi, умеет отображать список пользователей, принимать и отправлять сообщения, отображать пользователей, от которых есть непрочитанные сообщения, а также искать нужных людей среди френдленты по имени и фамилии: в общем самый минимум, хотя делает он это весьма красиво.
          Примечателен клиент тем, что здесь нет ни единой строчки на C++, всё сделано средствами qml и javascript.
          Несколько скриншотов и ссылки для скачивания
        • Библиотека Qwt: как построить график функции на плоскости?

            Скриншот простейшей программы, демонстрирующей использование виджетов Qwt
            Уже пять лет я не пишу приложения с GUI, потому предложение зав. кафедрой подготовить для его лекции программу, строящую некие графики, поначалу меня несколько расстроило.

            Как настоящий программист я решил найти самый легкий (и полезный для саморазвития) путь.
            А именно, это задание оказалось хорошим поводом для того, чтобы познакомиться с Qt и библиотекой Qwt. Заодно я узнал, что приложения с GUI, оказываются, могут быть кроссплатформенными, а их код не менее элегантным, чем у приложений с «интерфейсом в стиле Unix™».

            Итак, Qwt — библиотека виджетов для программирования приложений, имеющих техническую направленность. Она содержит набор виджетов, представляющих собой всевозможные слайдеры и дисковые «номеронабиратели», виджеты для построение гистограмм. Но здесь я расскажу, как Qwt применить для построения самых обычных двумерных графиков функций вида y = f(x).

            Дальше в данной заметке
            • приводится ссылка на исходный код моего простейшего примера (+ исполняемые файлы) и инструкция по его компиляции;
            • рассказывается, как же в этом примере всё устроено;
            • для новичков описывается компиляция и установка Qwt.

            Читать дальше →
          • Работаем с моделями в QML


              В продолжении предыдущего поста, хочется рассказать ещё немного о новой технологии от Qt Software и Nokia. Напомню, что QML — это новый язык описания пользовательского интерфейса, призванный упростить разработку современных приложений и наполнить их движением.
              В этой статье мне хотелось бы немного рассказать о том, как в QML работает парадигма MVC
              Читать дальше →
            • Url to PDF. Легко и без проблем

                Всем здравствовать.
                Давеча был замечен мною интересный пост про замечательный сервис с говорящим адресом: pdfmyurl.com
                И родилась мысль написать об альтернативном, более интересном способе (особенно интересном для программистов, энтузиастов и просто любящих консоль людей). Точнее, о проекте, позволяющим делать то же самое, не используя сторонний сервис.
                Что же за проект?
              • Ой, у вас баннер убежал!

                Ну, и что?
                Реклама
              • Первые шаги с QML

                  QML — это новый язык разметки для создания пользовательских интерфейсов. Его основная задача — обеспечить возможность простого и быстрого создания приложений с красивым, анимированным интерфейсом.
                  Не так давно вышла публичная версия. Это означает, что API в целом стабилизировался, и версию можно смело тестировать и использовать.
                  Declarative UI планируется включить в релиз Qt 4.7, а пока можно найти все необходимые файлы и инструкции по установке на ftp троллей.
                  В данной статье мне хотелось бы показать, как можно использовать С++ объекты (QObject) в qml.

                  Начнем
                • Мои первые собственные доработки Qt-creator'a

                    Всем привет. Пару дней назад я начал немного «похачивать» Qt-creator. Чтобы понять в общих чертах внутренности прилось потратить вечер. Еще один вечер ушел чтобы понять как реализовать эту фичу. Ну и в конечном итоге реализация заняла около часа.

                    Смысл этой фичи заключается в том, что теперь можно с помощью соотвественного переключателя соеденить деревья исходных файлов и заголовчных файлов. Мне было неудобно иметь два дерева — одно для заголовочных файлов — другое для исходных, и это сподвинуло меня реализовать эту маленьку переделку.

                    Результаты можно посмотреть в моем «merge request» на gitorious'е .

                    Вот небольшая видео-демка, демонстрирующая мою фичу.


                    Я поменял класс FolderNode, теперь в нем есть свойство FileType contentType(). Это свойство определяет тип содержимого папки (исходники, заголовочные файлы, ресурси и тд.). Еще я добавил свойство excludeFolderType в FlatMode. Это свойство служит для того, чтоб исключить все папки, у которых контент соостветсвующего типа, из модели со всеми наследниками.

                    Зачем мне это было нужно.
                    1. Хотелось понять как устроен Qt-creator.
                    2. Повысить свои навыки (поучится на чужом коде).
                    3. Помочь сделать Qt-creator лучше.

                    Дальше планирую реализовать еще парочку небольших улучшений:
                    1. Панель файловой системы сделать древовидной.
                    2. Состояние файла в проекте в системе контроля версий.

                    P.S: Это был мой первый опыт работы с git и gitorious.
                    Если кому нибудь будет непонятно как «контрибутить» свой код — обращайтесь, с радостью все расскажу.
                    UPD: как всегда английскую версию можно найти на моем блоге
                  • Разработка на Qt для Symbian S60 официально доступна

                      Очень долго ждал официального релиза Qt 4.6.0, так как Тролли обещали поддержать официально разработку под S60 на Qt. Пока существовал Developer Preview — разработчик мог писать приложения для S60, но не существовало никаких механизмов для предоставления приложений конечному потребителю (то-есть пользователю).
                      image
                      image
                      На момент выхода релиза 4.6.0 обещали эту ситуацию поправить, и в форумах и в переписке тролли отвечали на вопросы касающиеся «deploy»'у (очень не нравится мне русский аналог этого слова: «развертывание» ) приложений на устройства так: «В пред релизе этого нет, ждите официального релиза. Там всё будет!».

                      Что же изменилось с выходом официального релиза?
                      Читать дальше →
                    • Приватные слоты в паттерне Pimpl от Qt

                        Вступление.


                        Недавно я писал по поводу реализации паттерна Pimpl в библиотеке Qt и призывал людей следовать такому подходу при разработке их собственных бибиотек. Теперь я хочу поговорить о таком понятии, как приватные слоты и тем самым продолжить эту тему. Заключительной статьей на эту тему будет реализация механизма Implicit Sharing и shared d-pointer.

                        Что это и зачем это нужно.


                        Приватные слоты — это механизм дополняющий функционал d-указателей. Он позволяет реализовать слоты для приватного класса, даже если он не является наследником от QObject (обычно он им и не является), но для этого публичный класс должен быть наследником от QObject. Тоесть по факту создается некий приватный слот в публичном классе и он непосредственно дергает нужный метод приватного класса.
                        Зачем это нужно? Ну рассмотрим на примере. Есть класс QAbstractScrollArea. Он просто отображает некий виджет (viewport) и обеспечивает прокрутку. Прокрутка обеспечивается с помощью двух экземпляров класса QScrollBar. Сами эти скролбары он хранит в приватном классе. Теперь проблемма: как подключить сигнал от скроллбара об изменение его позиции с классом QAbstractScrollAreaPrivate, ведь он не является QObject'ом? Сделать его наследником от QObject — лучше не делайте это :-). Можно сделать слот в публичном классе и повесить на него, то в таком случае это не очень красиво — так как наружу выходят слоты от внутренней реализации. Вот ту Qt-шниками был придуман достаточно разумный и элегантный подход — приватные слоты.

                        Читать дальше →
                      Самое читаемое