Как стать автором
Обновить
6.27

Qt *

Кроссплатформенный инструментарий разработки ПО

Сначала показывать
Период
Уровень сложности

Digia будет заниматься коммерческим лицензированием и платной поддержкой Qt вместо Nokia

Время на прочтение1 мин
Количество просмотров1.5K
Об этом Nokia сообщила сегодня в блоге: Nokia and Digia working together to grow the Qt community

Nokia будет продолжать инвестировать в развитие Qt, как коммерческого так и (L)GPL.

Пресс-релиз Digia.

Digia — финская компания, Training и Consulting партнёр Nokia. Занимается как разработкой приложений на Qt и Qt-виджетов, так и адаптацией Qt к новым ОС. Предоставляет также тренинги по Qt для различных платформ, включая Symbian.

PS: Уместнее был бы топик-ссылка, но в нём запрещён хтмл почему-то, и не вставить вторую ссылку.
Всего голосов 54: ↑51 и ↓3+48
Комментарии69

Анонс Qt 4.6

Время на прочтение2 мин
Количество просмотров1.3K
9 сентября этого года наша любимая компания, разрабатывающая один из лучших инструментариев для создания графических приложений, представила на публику анонс новой версии: 4.6. Что нового? А вот что:
Подробнее
Всего голосов 52: ↑50 и ↓2+48
Комментарии57

Qt Build System: спасательный круг для сборки

Время на прочтение10 мин
Количество просмотров48K

Примечание(17.06.2013): синтаксис примеров в статье не соответствует последним версиям. Сверяйтесь с документацией. Также в марте был выпущен Qt Creator 2.7 с поддержкой QBS.
Не так давно команда разработчиков Qt представила новую систему сборки — QBS. Разумеется, основной реакцией было «Да чем вас QMAKE не устраивал», «Просто адаптируйте CMAKE», «Ещё одна система сборки [xkcd, стандарты]». Обещанные преимущества новой системы: гибкость, понятный синтаксис для всех разработчиков (QML — javascript-подобный декларативный язык), скорость билдов (чистых и инкрементальных), а также лёгкая расширяемость.
Всё это мы где-то уже слышали, поэтому в данной статье мы попытаемся разобраться, как разработчики пришли к этой системе, рассмотрим простейшие примеры, изучим основные конструкции и посмотрим, какая поддержка на уровне IDE присутствует на настоящий момент.
Let's go!
Всего голосов 47: ↑47 и ↓0+47
Комментарии49

Сигналы и слоты в Qt5

Время на прочтение3 мин
Количество просмотров35K
Qt5 alpha увидел свет. В этой статье я опишу одну из фич, над которыми работал — это новый синтаксис сигналов и слотов.

Предыдущий синтаксис


Вот как мы обычно соединяем сигнал и слот:

connect(sender, SIGNAL(valueChanged(QString,QString)),
        receiver, SLOT(updateValue(QString)) );

На самом деле макросы SIGNAL and SLOT преобразуют свои аргументы в строки. Затем QObject::connect() сравнит эти строки с данными интроспекции собранными утилитой moc.

В чем проблема этого синтаксиса?

Не смотря на то, что в целом все работает хорошо, некоторые неудобства все же есть:
Читать дальше →
Всего голосов 47: ↑47 и ↓0+47
Комментарии54

Истории

Мысли по поводу Qt 5

Время на прочтение6 мин
Количество просмотров15K
Qt 4.0 была выпущена в июне 2005 года, почти шесть лет назад. Многое изменилось в индустрии программного обеспечения за эти годы. Тогда разработка приложений шла в основном на настольных системах, сейчас же мобильные устройства, подключенные к сети, становятся все более популярными. Технология пользовательского интерфейса перешла от статических виджетов к плавным сенсорным. Начиная с Qt 4.0, мы выпустили семь минорных версий Qt, следуя потребностям разработчиков и пользователей, например, разработав Qt Quick. С растущей пользовательской базой Qt, растёт потребность во встроенных, мобильных приложениях и UI-разработчиках.

Кроме того, в будущем, чтобы быть ведущим фреймворком для разработчиков в нескольких отраслях, Qt необходимо непрерывно обновляться и развиваться. Qt 4 был эволюцией, поэтому я задумался о том, как могут выглядеть следующие версии Qt с технической точки зрения. Последние годы мы работали над созданием основы для следующей мажорной версии. Я вижу в ней Qt Quick, QML Scenegraph и проект Lighhouse в сочетании с усилением акцента на Qt Webkit как фундамент, который мы планируем использовать для перехода к новому мажорному релизу Qt.

Учитывая, что Qt управляется открыто, я хотел бы поделиться своими размышлениями с сообществом Qt, чтобы начать дискуссии о технической архитектуре Qt 5.
Читать дальше →
Всего голосов 53: ↑50 и ↓3+47
Комментарии44

Анонимный браузер своими руками или Hide your ass yourself

Время на прочтение4 мин
Количество просмотров14K
Вступление

Этот небольшой топик расскажет о том, как просто и быстро сделать свой браузер, с небольшими добавками, которые помогут нам остаться анонимным в сети. Всю черную работу за нас сделает Qt, а именно его модуль QtWebKit. Мы лишь добавим в нужные места строки, подменяющие http-заголовки наших http- запросов. Это позволит оставаться анонимными при пассивном анализе http-запросов. Также переопределим navigator, что позволить оставаться анонимными для javascript-ов при активной идентификации. Для определенности обозначим основные параметры, с помощью которых нас можно идентифицировать в сети – вот именно их мы и будем подменять. Первое – это конечно IP адрес, тут все просто – используем прокси. Второе – любые заголовки http-запроса (user-agent будет наиболее интересен: его значение нужно подменять как в заголовках http-запросов, так и в проверке javascript-ами). Также реализуем возможность редактировать и подставлять свои сookies для определенных сайтов, раз уж есть такая возможность. И дополним все это встроенным редактором для подменяемых параметров с возможностью их сохранения для последующего использования.
Читать дальше →
Всего голосов 59: ↑53 и ↓6+47
Комментарии34

Развенчание мифов о мета-объектном компиляторе Qt

Время на прочтение5 мин
Количество просмотров20K
Я часто встречаю критику фреймворка Qt, в которой ему пеняют использованием мета-объектного компилятора (утилиты moc). Как один из разработчиков moc, я решил написать данную статью с целью развенчать некоторые связанные с этим мифы.

Вступление


Moc — это один из инструментов разработчика и часть библиотеки Qt. Его задача — поддерживать расширение языка С++, необходимое для интроспекции и рефлексии в Qt (сюда относятся сигналы, слоты и QML). Для более детального объяснение вы можете почитать о том, как работают сигналы и слоты в Qt.

Необходимость использования moc является одним из главных объектов критики Qt. Это даже привело к появлению форков Qt, принципиально отказавшихся от moc (например, CopperSpice). Но всё-же большинство приписываемых moc так называемых недостатков не обоснованы.
Читать дальше →
Всего голосов 52: ↑49 и ↓3+46
Комментарии70

Слушаем музыку из Vkontakte через Амарок — V.2.0

Время на прочтение2 мин
Количество просмотров15K
Всем привет! Не писал статей более двух лет и вот, наконец-то, появилось свободное время. Вы, наверное, не помните мой топик 2-х летней давности — Слушаем музыку из Vkontakte через Амарок. Напомню суть — тогда я написал плагин для KDE-шного Amarok`a, который позволял искать и слушать музыку из Вконтакте. Если вам все еще интересно, прошу под кат(осторожно — картинки!).
Читать дальше →
Всего голосов 72: ↑59 и ↓13+46
Комментарии55

Создаем сложные интерфейсы и спецэффекты на базе Qt. Часть I

Время на прочтение18 мин
Количество просмотров27K

Привет, Хабр! Меня зовут Михаил Полукаров, я занимаюсь разработкой desktop-версии в команде VK Teams. Каждый день нашим мессенджером пользуются миллионы людей, поэтому мы уделяем особое внимание интерфейсу пользователя. Он должен быть не только функциональным и отзывчивым, но ещё и привлекательным с эстетической точки зрения. Для создания графических интерфейсов мы используем Qt Framework, и уже накопили много опыта в решении нетривиальных задач с помощью этого инструмента. Настолько много, что статью пришлось разделить на две части. 

Под катом мы пройдём путь от создания отдельных компонентов-примеров, экспериментов с маскированием, прозрачностью, размытием и перекрывающимися компонентами до разработки небольшого демонстрационного приложения, объединяющего все полученные ранее решения.
Читать дальше →
Всего голосов 35: ↑34 и ↓1+45
Комментарии7

Новости Qt, май 2018 — декабрь 2018

Время на прочтение8 мин
Количество просмотров12K

Очередной сборник новостей Qt, на этот раз за последние полгода с прошлой статьи. Релизы 5.11 и 5.12, реинкарнация PySide, внезапные похороны Qbs, выход Qt Design Studio и значительное улучшение условий лицензий для стартапов.


ДДПВ

Читать дальше →
Всего голосов 45: ↑45 и ↓0+45
Комментарии59

Приведение типов

Время на прочтение4 мин
Количество просмотров206K
Будучи на конференции Qt Developer Days 2010 я узнал, что одним из самых популярных вопросов на собеседовании в разные зарубежные компании, работающие с Qt библиотекой, является вопрос о различиях в способах приведения типов в C++. Поэтому здесь я рассмотрю основные различия между static_cast, dynamic_cast, const_cast, reinterpret_cast, C-style cast, qobject_cast и qvariant_cast

Читать дальше →
Всего голосов 51: ↑48 и ↓3+45
Комментарии59

Правильная работа с потоками в Qt

Время на прочтение13 мин
Количество просмотров78K
Qt — чрезвычайно мощный и удобный фреймворк для C++. Но у этого удобства есть и обратная сторона: довольно много вещей в Qt происходят скрыто от пользователя. В большинстве случаев соответствующая функциональность в Qt «магически» работает и это приучает пользователя просто принимать эту магию как данность. Однако когда магия все же ломается то распознать и решить неожиданно возникшую на ровном казалось бы месте проблему оказывается чрезвычайно сложно.

Эта статья — попытка систематизации того как в Qt «под капотом» реализована работа с потоками и о некотором количестве неочевидных подводных камней связанных с ограничениями этой модели.

Основы
Thread affinity, инициализация и их ограничения
Главный поток, QCoreApplication и GUI
Rendering thread
Заключение

А Вы правильно работаете с QThread и сигналами?
Всего голосов 44: ↑44 и ↓0+44
Комментарии38

Скриншотим игры — the hard way

Время на прочтение6 мин
Количество просмотров39K
Ну что такого сложного может быть в создании скриншота? Казалось бы — позови функцию, любезно предоставленную операционкой и получи готовую картинку. Наверняка многие из вас делали это не один раз, и, тем не менее, нельзя просто так взять и заскриншотить полноэкранное directx или opengl приложение. А точнее — можно, но в результате вы получите не скриншот этого приложения, а залитый черным прямоугольник.
Читать дальше →
Всего голосов 46: ↑45 и ↓1+44
Комментарии22

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
10 – 11 октября
HR IT & Team Lead конференция «Битва за IT-таланты»
МоскваОнлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн

Digia намерена укрепить сотрудничество с KDE и обсудить с сообществом будущее развитие Qt

Время на прочтение2 мин
Количество просмотров1.2K
От переводчика: не пинайте, ждал пока кто-либо переведёт эту новость, но данного события так и не случилось, а обсудить очень хочется.

Вслед за недавним объявлением, о полном приобретении Qt у Nokia, Digia изложила свои дальнейшие планы в письме к сообществу KDE.

Директор R&D департамента Digia, Tuukka Turunen заявил, что видит будущее Qt, как лучшей кросс-платформенной среды разработки и желает наладить более тесное сотрудничество с KDE и другими партнерами в экосистеме Qt.

Полный текст письма приводится ниже.
Читать дальше →
Всего голосов 46: ↑45 и ↓1+44
Комментарии13

Синхронная и асинхронная загрузка изображения из сети с последующей обработкой

Время на прочтение10 мин
Количество просмотров11K
Доброго всем хабрадня!

Сегодня я хочу рассказать об одном из методов синхронной и асинхронной загрузки изображения из сети. Чтобы статья была не скучной, загруженные изображения мы попробуем каким-либо образом обработать средствами Qt.


Как будем загружать?


Для загрузки изображений мы будем использовать QNetworkAccessManager и QEventLoop, а так же немного мета-объектов. Загружать будем по HTTP изображение в любом формате, из поддерживаемых Qt. Ну, ещё будем обрабатывать редиректы.

Как обрабатывать-то будем?


Есть замечательный класс QGraphicsEffect с подклассами. Но мы с ними работать в рамках данной статьи не будем, смиритесь! И я даже объясню почему. К примеру, в Qt 4.8.0 эти эффекты ведут к крашу приложения в Mac OS X 10.7.+, а в Qt 4.7.4 в той же системе они вообще не работают. Уж не знаю, как так вышло, но багу в багтрекере Qt я поставил.

Значит, будем создавать свой класс для обработки изображений. Он будет у нас уметь слудющее:
  • Переводить изображение в оттенки серого
  • Колоризировать (как это по русски-то сказать?)
  • Добавлять тень
  • Менять прозрачность
  • Вращать вокруг центра
  • Квадратизировать
  • Квадратизировать со скруглением углов
  • Как бонус, научимся считывать пользовательские цвета в формате #RRGGBBAA

Сразу отмечу, что полный код тестового проекта можно скачать на гитхабе, ссылка в конце статьи.
Поехали!
Всего голосов 44: ↑44 и ↓0+44
Комментарии24

Интеграция приложений Qt в среду Mac OS X (с использованием Cocoa и Objective-C++)

Время на прочтение9 мин
Количество просмотров14K
Доброго всем дня!

Недавно я писал о кастомизации заголовка окна в Mac OS X и получил реквесты написать поподробнее о взаимодействии Qt и Cocoa. Думаю, тему можно немного развернуть и написать об интеграции приложений, написанных с помощью Qt, в среду Mac OS X. Оговорюсь, что используется в данном случае Qt for Cocoa, если возьмёте Qt for Carbon, то и работать придётся только с карбоном. Но он морально устарел, и использовать его стоит только в крайних случаях.

Обычная Qt-программа имеет ряд несостыковок с Apple HIG. Точнее, может иметь, так как не всем программам нужен дополнительный функционал. Например, не любой программе надо иметь бэдж поверх значка в доке, расширять меню дока или выносить/дублировать некоторые функции в маковское меню.

Но что делать, если такой функционал нужен? Если нужно отображать в доке количество уведомлений (а-ля скайп), обрабатывать клик по иконке в доке, добавлять свои пункты меню в док, да ещё и иметь нормальное меню, в общем, сделать так, чтобы программа смотрелась как родная в Mac OS? Что-то из этого можно сделать с помощью штатных или полудокументированных функций Qt, а что-то — только с использованием Cocoa и, соответственно, Objective-C… Что же делать?

Нам поможет Objective-C-plus-plus!
Всего голосов 48: ↑46 и ↓2+44
Комментарии25

Что такое Pimpl по версии Qt, и с чем его едят!

Время на прочтение12 мин
Количество просмотров39K

Вступление.



Часто в документации от Qt встречается термин Pimpl. Кроме того, те кто хоть немного копался в исходном коде Qt часто видел такие макросы как: Q_DECLARE_PRIVATE, Q_D. А также встречал так называемые приватные заголовочные файлы, название которых заканчивается на "_p.h".
В этой статье я попробую приоткрыть ширму за всей это структурой.

Pimpl, что это?


Pimpl — Pointer to private implementation. Это одно из названий паттерна программирования. Еще его называют чеширским котом — «Cheshire Cat» (это название мне больше нравится). В чем суть этого паттерна? Основная идея этого паттерна — это вынести все приватные члены класса и, в не которых случаях, функционала в приватный класс.
Отсюда название «чеширский кот» — видно только улыбку, а все остальное остается невидимым, но оно несомненно есть :-) Кто не помнит этого замечательного кота, может обратится к первоисточнику, к книге Льюиса Кэрролла «Алиса в стране чудес». Очень интересная книга, особенно если читать в оригинале.
Что это дает?
Читать дальше →
Всего голосов 48: ↑46 и ↓2+44
Комментарии70

Официальный релиз первого телефона с Ubuntu Phone внутри

Время на прочтение1 мин
Количество просмотров83K
Дорогие друзья, хочется рассказать вам о том, что состоялся долгожданный и неоднократно откладываемый релиз Ubuntu Phone!

Вкратце о новинке


image
Первый телефон выпустила испанская компания BQ, он носит название Aquaris E4.5 Ubuntu Edition (вторая часть которого намекает, что телефон и ранее присутствовал на рынке и просто был адаптирован под UP). Сам по себе телефон имеет довольно скромные характеристики (которые можно увидеть под катом), однако и цена соответствующая — €169.90 (или примерно $190). Из этого несложно сделать вывод, что конкретно эта модель будет в первую очередь бороться за рынок бюджетных устройств (где доминирует Android и уже показывает неплохую конкуренцию Windows, например). Продажи начнутся в понедельник, 9 февраля.
Подробности
Всего голосов 61: ↑52 и ↓9+43
Комментарии66

C++14 для Qt программистов

Время на прочтение5 мин
Количество просмотров49K
В этой статье описывается каким образом изменения, принесенные стандартом С++14, отразились или могут отразиться на разработке Qt приложений. Данная статья ориентирована не только на Qt программистов, но также на всех тех, кому интересно развитие С++. Автор оригинала — Olivier Goffart, являющийся одним из разработчиков Qt moc (meta-object compiler).
Читать далее
Всего голосов 43: ↑43 и ↓0+43
Комментарии20

Сверхбыстрое копирование\вставка фрагментов кода

Время на прочтение6 мин
Количество просмотров29K
Постоянно программируя на C++/Qt, я заметил, что было бы удобнее хранить где-нибудь свои отрывки кода и иметь к ним быстрый доступ. Конечно же, я принялся искать и нашёл множество готовых программ-органайзеров и сайтов. Я перепробовал их, но меня всё это не устроило.

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

Поэтому я взялся написать свою программу на Qt. Она оказалась настолько удобной, что я уже не представляю свой кодинг без неё и конечно же решил её опубликовать — вдруг кому ещё пригодится? Под катом расскажу о проблемах и задачах, которые пришлось решить, выложу свой опыт, а также обзор самой программы и её исходного кода.

Читать дальше →
Всего голосов 53: ↑48 и ↓5+43
Комментарии48

Вклад авторов

Работа

QT разработчик
12 вакансий