Мар 11

Каждый разработчик, знакомый с Qt, знает об используемом в этой библиотеке паттерне сигналов и слотов. Традиционно синтаксис соединения сигналов и слотов в PyQt и PyKDE выглядел очень похоже на аналогичный синтаксис в C++:

from PyQt4 import QtCore
from PyQt4 import QtGui
from PyKDE4 import kdeui

class MyGUI(QtGui.QWidget):

    def __init__(self, parent=None):
        super(MyGUI, self).__init__(parent)
        self.pushbutton = kdeui.KPushButton()
        self.pushbutton.setText("Push me!")

        QObject.connect(self.pushbutton, QtCore.SIGNAL("clicked()"),
                               self.button_pushed)

    def button_pushed(self):
        print "Button clicked"

Однако в PyQt 4.5 была добавлена поддержка нового стиля соединений:

from PyQt4 import QtCore
from PyQt4 import QtGui
from PyKDE4 import kdeui

class MyGUI(QtGui.QWidget):

    def __init__(self, parent=None):
        super(MyGUI, self).__init__(parent)
        self.pushbutton = kdeui.KPushButton()
        self.pushbutton.setText("Push me!")
        # New style
        self.pushbutton.clicked.connect(self.button_pushed)

    def button_pushed(self):
        print "Button clicked"

Будучи основанной на PyQt4, PyKDE4 также теперь поддерживает этот синтаксис. Как видите, код таких соединений выглядит гораздо компактнее и выразительнее, и более «по-питоновски». Кроме того, если раньше было трудно отследить возможные ошибки, допустив опечатку в названии сигнала или слота, то теперь любая опечатка вызовет исключение AttributeError.

Подробнее использование нового стиля описано в документации к PyQt.

Обратите внимание: если вы решили перейти с PyQt на PySide, то этот синтаксис вам пока ещё не доступен. Тем не менее, разработчики PySide планируют исправить это в будущих версиях библиотеки. Детали реализации нового стиля сигналов и слотов в PySide описаны в этом документе.

Мар 10

Разработчики QtWebKit приняли решение отделиться от процесса подготовки релизов Qt, чтобы иметь возможность выпускать обновления чаще, чем выходят новые версии основной библиотеки. Первый независимый релиз QtWebKit будет называться QtWebKit 2.0 и выйдет в мае. Эта версия будет совместима с Qt 4.6 и Qt 4.7. Новые релизы Qt будут по-прежнему включать текущую стабильную версию QtWebKit.

В прошлом медленный цикл развития QtWebKit тормозил разработку новых возможностей таких приложений, как Arora, Rekonq и WebKit KPart. Сейчас его сообщество активно растят, и более частый выпуск новых версий поможет динамичному развитию проекта — достаточно глянуть на серию заметок «This week in QtWebKit trunk»

Кроме того, используемая в QtWebKit ветка WebKit всегда синхронизируется с текущей стабильной веткой при выходе значительных релизов Qt (4.5, 4.6), из-за чего новые версии браузеров на основе QtWebKit могли долгое время отставать в реализации поддержки веб-стандартов от других WebKit-браузеров. Теперь же, работая по независимому от Qt графику, разработчики QtWebKit могут легко привязаться к выходу новых версий WebKit.

Фев 15

Продолжая мобильную тему, сегодня было объявлено о выходе Qt 4.6.2 для Maemo 5.

И если более ранние версии Qt для Maemo выходили с приставкой beta, то теперь этот порт считается стабильным. Конечные пользователи получат Qt 4.6.2 в составе обновления PR1.2

Фев 15

Сегодня разработчики Nokia и Intel объявили о том, что проекты Maemo и Moblin будут объединены с целью создания новой мобильной платформы MeeGo. MeeGo будет поддерживать широкий спектр устройств, включая мобильные компьютеры, нетбуки, таблетки, смартфоны, телевизоры и бортовые компьютеры автомобилей. Первые устройства на основе MeeGo должны появиться уже в этом году.

MeeGo будет основана на Linux, а основным фреймворком для разработчиков будет Qt. В пресс-релизе подчёркивается, что Qt позволяет разработчикам однажды создав приложение, поддерживать его на множестве различных платформ, а также продвигать в Ovi Store от Nokia и AppUpSM Center от Intel.

Обещают, что проект будет поддерживаться Linux Foundation и управляться согласно с лучшими практиками OpenSource модели.

Замечу, что буквально пару дней назад было объявлено о начале работ над портированием Qt на платформу Android энтузиастами при помощи средств проекта Lighthouse

Дек 17

Недавно один из разработчиков Qt Labs Paul Olav Tvete рассказал о проекте Lighthouse, целью которого является упростить портирование Qt на различные платформы. Идея проекта проста: изолировать весь платформенно-зависимый код, и создать фреймворк для написания «бэк-эндов» под различные платформы и устройства вывода.

Сейчас поддержка многих устройств реализована в рамках проекта Qt for Embedded Linux. Это очень гибкая платформа, которая развивается уже более десятка лет, но некоторые её аспекты не соответствуют современным тенденциям. Например, Qt/E включает в себя полноценный оконный менеджер, который нужен далеко не на всех платформах, тем более, во многих из них реализованы свои системы управления окнами. Читать далее »

Дек 01

Сегодня вышла Qt 4.6, и среди прочего заявлена поддержка multi-touch навигации и жестов. Marco «notmart» Martin заранее был снаряжён Tablet PC с поддержкой multi-touch и заданием от Nokia сделать что-нибудь интересное с новыми возможностями Qt. Вот что у него получилось, когда он поэкспериментировал с Marble и Plasma:

Хорошие новости: всё это будет включено уже в KDE 4.4. Но даже если у вас где-то завалялся Tablet PC, не спешите туда ставить Linux: увы, в X11 поддержка multi-touch пока ещё не реализована, так что все эти возможности будут доступны только в Windows- и Mac-сборках.

Если вас интересуют детали реализации, то почитайте описание классов QGesture и QTouchEvent. Первый позволяет вам реагировать на заранее определённые события вроде «жест для вращения» или «жест для скроллинга», а второй даёт непосредственный доступ к координатам нескольких нажатий.

Вот здесь представлено ещё несколько демонстрационных видеороликов.

Окт 13

С новыми возможностями, предоставляемыми Qt 4.6, экспериментируют не только разработчики qutIM.

Enrico Ros — автор Fotowall и один из хакеров Amarok, также делится с читателями своими восторгами.
Вот, например, панель инструментов в Amarok можно переделать таким образом:

Окт 08

Спустя 7 дней после выхода предварительной версии Qt 4.6 разработчики Fotowall, программы для создания коллажей из изображений вашей домашей коллекции и он-лайн галлерей, выпустили стаильную сборку пакета для Windows, основанную на Qt 4.6. Кто-то может сказать что это было довольно поспешным решением, однако Энрико Рос (Enrico Ros) заявляет, что новые возможности версии 4.6 стоят такого рискованного шага. Читать далее »

Окт 07

Тем, кто интересуется разработкой по-настоящему кросс-платформенных приложений, будет интересна новость от Эспен Рискедал (Espen Riskedal) — теперь обновления Qt для мобильной платформы S60/Symbian доступны ежедневно. Каждую ночь в 2:30 новая версия доступна по следующей ссылке:

Скачать последнюю версию Qt для Symbian/S60!

Также есть инструкция по установке. Доступно два типа файлов: скомпилированные пакеты (название файла qt-embedded-s60-opensourceYYYYMMDD-4.6.0-tp1.exe) и архивы с исходным кодом (qt-embedded-s60-opensource-src-4.6.0-tp1.zip). Каждому пакету скомпилированных файлов соответствует архив исходных кодов из которых они были созданы – вбольшинстве случаев вам понадобится только первое. В состав готового пакета входит мастер установки для Windows (приведен на скриншоте ниже).

Установщик Qt для Symbian/S60

Установщик Qt для Symbian/S60

Внутри пакета .exe содержится три .sis файла Qt. Большинству из вас (если, конечно, вы не сотрудник Nokia) понадобится установить qt_for_s60_selfsigned.sis наряду с fluidlauncher.sis или любым другим приложением.

Данная версия Qt работает на платформах S60 версий 3.1, 3.2 и 5.0. Если вы используете какой-нибудь особенный RnD SDK для внутреннего использования, то эта версия также, возможно. будет работать (Подсказка: Используйте опцию «Выбор дополнительных папок» если вашего SDK нет в devices.xml).

Для каждой сборки используется HEAD Git-репозитория Qt, который вы можете найти по адресу http://qt.gitorious.org/qt/qt/commits/4.6. Другими словами, если из-за ошибки что-то случится в процессе сборки, то пакетов в этот день не будет. на текущий момент QtScript и QtWebkit все еще не входят в состав пакета, но Эспен обещает, что ждать осталось недолго.

И напоследок заявление от разработчиков: Это программное обеспечение не является готовым продуктом. Ваш телефон может престать работать, а реки могут наполниться кровью и небеса обрушиться на землю кислотным дождем — используйте на свой страх и риск.

Июл 02

Одним из аргументов против KDE в извечных DE-холиварах является трудность создания новых стилей виджетов и оконных декораций. Оппоненты приводят примеры из мира Gnome: Emerald, Pixmap, Clearlooks, Aurora, Murrina и их разнообразные настройщики.

Что же может предложить KDE в этом плане? Давайте посмотрим.

Plasma Emerald Theme Generator

Это пограничный вариант, так как для работы требуется Compiz, не совсем родное для KDE приложение.

Суть этого генератора проста как две копейки: на основе любой существующей в системе plasma-темы создаются оконные декорации. Код основан на  Kdm/Ksplash/Theme Generator

Plasma Emerald Theme Generator work

Work of Plasma Emerald Theme Generator.

Найти Plasma Emerald Theme Generator можно здесь.

deKorator

deKorator — стиль оконных декораций, поддерживающий смену тем, относительно недавно был портирован на Qt4/KDE4, попутно получив пару приятных добавлений в виде встроенного предпросмотра (диалог выбора оконных декораций в «Настройках системы») и поддержки ARGB visuals.

Theme list of deKorator themes

Список тем для deKorator

Темы для деКоратора лежат здесь, также народ потихоньку портирует Emerald’овские, и уже поступило несколько фичереквестов по поводу добавления полезной в этом деле функциональности.

Aurorae Theme Engine
В отличии от Emerald и deKorator, работающих с форматом png, Aurorae, ещё один стиль декораций, дружит уже c SVG. Если вы не новичок в векторной графике, то это хороший повод раскочегарить Inkscape.

Aurorae theme engine examle theme

Пример темы для Aurorae

Движок Aurorae ещё очень молодой, построен с использованием Plasma-технологий, есть поддержка ARGB. А вот реальной непрозрачности (opaque) в нём пока нет, но планируется добавить в ближайшем будущем. Тем, помимо референсной, пока создано только три штуки, и автор поощряет креативных пользователей на создание новых. Сообщения об ошибках и запросы на дополнительную функциональность также приветствуются.
UPD
С мест сообщают, что в транке Aurorae интегрирована в KWin.

Стили виджетов

Среди стилей виджетов ситуация более напряжённая.

Есть QtCurve — универсальный движок, работающий с Qt3, Qt4 и GTK2-приложениями и обеспечивающий единообразность их внешнего вида.

40492-1

QtCurve содержит немалое количество настроек, включая использование градиентов, степень «скругления» виджетов, разные варианты полос прокрутки и сепараторов. Доступна возможность экспорта и импорта файла настроек.

Bespin тоже интересный стиль: есть множество настроек, и способ обменяться с сообщниками результатами кропотливого тюнинга.

bespin_2

Но всё же, к этим стилям виджетов результаты своего креатива в графическом редакторе не приспособишь. А потому, встречайте:

QuantumStyle

QuantumStyle — это стиль виджетов для Qt4 и KDE4,  поддерживающий сменные SVG-темы. Надеюсь, ваш Inkscape после Aurorae ещё не успел остыть?

101088-1

Темы для этого движка создаются примерно так:

  1. Нарисуйте макет темы в Inkscape или любом другом векторном редакторе.
  2. Создайте файл конфигурации для вашей темы, используя Quantum Style Theme Builder.
  3. Сообщите QuantumStyle о необходимости использовать новосозданную тему, выставив «theme=yourtheme» в ~/.config/QuantumStyle/quantumstyle.qsconfig

101088-2

Теперь новый пункт должен появиться в диалоге выбора стиля в «Настройках системы» и qtconfig. Для верности можно выполнить команду kbuildsycoca4.

quantum

QuantumStyle находится на стадии RC3, но уже вполне может применяться в быту, несмотря на некоторое количество багов, недостающих виджетов и отсутствие диалога конфигурации.

101088-3

Но самое важное, чего ему нехватает — это контрибуторов. Без них не будет развития, новых тем, найденных и исправленных ошибок и новой функциональности.