Рубрика «qt» - 41

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

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

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

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

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

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

Не смотря на то, что в целом все работает хорошо, некоторые неудобства все же есть:
Читать полностью »

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

Я хочу продемонстрировать и объяснить упрощенную версию существующего кода. Если же захочется посмотреть на рабочий код, просто загляните в исходники Qt. Эта статья поможет понять основную концепцию.

Для того, что бы лучше усвоить статью, надо знать основы программирования без блокировок. Если вам понятна ABA проблема и вы знаете, как сделать стек без блокировок, то проблем не будет. Если же нет, в качестве вступления можно прочитать мою предыдущую статью [перевод].

Основная мысль статьи взята с финальной части моего выступления на Qt Developer days 2011.
Читать полностью »

Мы рады сообщить о выпуске альфа-версии Qt 5 — первого значительного релиза Qt с момента запуска сообщества Qt Project. Команда разработчиков Nokia благодарит всех энтузиастов этого комьюнити, принимающих непосредственное участие в создании Qt 5 Alpha, ведь многие возможности Qt 5 стали доступны именно благодаря их сплоченной работе. Нам очень приятно, что Qt Project стал местом, где люди объединяются, чтобы совместными усилиями развивать любимый фреймворк.

Основной целью альфа-версии Qt 5 является получение фидбека от разработчиков, который поможет улучшить все последующие релизы. В альфа-релизе Qt 5 акцент ставился на предоставлении основных модулей Qt Essentials, формирующих базовый функционал Qt 5. Это кросс-платформенные модули, достаточные для создания большинства приложений.

В виде бинарного пакета Qt 5 Alpha распространяться не будет, но для самостоятельной компиляции доступны исходные файлы. Разумеется, доступна и инструкция по компиляции.

Разработка Qt 5 началась примерно 9 месяцев назад, преследуя несколько основных целей, описанных в мае прошлого года директором по развитию Qt в Nokia Ларсом Ноллом. Ниже будет список этих целей и того, что уже было достигнуто.
Читать полностью »

Эта статья — введение в программирование без блокировок (неблокирующая синхронизация). Я пишу ее, потому что она будет ключем к пониманию моей следующей статьи [от пер.: перевод в процессе]. Она же является основой моего выступления на Qt Developer Days 2011.

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

Когда разным потокам в вашей программе необходимо получить доступ к одним и тем же данным, необходимо убедиться, что эти данные всегда во время использования находятся в целостном актуальном (когерентном) состоянии. Один из путей достижения этой цели — делать блокировки. Поток овладевает мьютексом, для записи данных. Этот поток может работать со структурами данных и держать их в неопределенном состоянии, но это не приведет к проблеме, т.к. другие потоки в это время не смогут получить доступ к данным, потому что они будут заблокированы, ожидая освобождения мьютекса. Пока поток ожидает, операционная система переключится на другие потоки или процессы, а может просто даст процессору отдохнуть.
Читать полностью »

Забавный день,!

Спустя ровно год активной разработки мы — все те, кто участвовал в разработке qutIM, рады вам представить релизную версию 0.3 под кодовым именем Nolwe.
За прошедший год было исправлено огромнейшее количество ошибок, добавлены недостающие фичи и переработаны некоторые плагины.

qutIM 0.3: Через тернии к звёздам!

Читать полностью »

На Хабре и в Сети достаточно много статей на тему QML, но все они оставляют за кадром некоторые моменты. Сегодня я попытаюсь приподнять занавес над некоторыми очевидными моментами для тех, кто имел дело со связкой QML и C++, и не таких очевидных для тех, кто только начинает вникать в нюансы этой замечательной технологии.
Итак. Допустим, у нас есть интерфейс приложения на QML и C++ класс с логикой работы. Как же нам собрать все это в единое целое?Читать полностью »

Вступление

Используя порт Qt для Android я наткнулся на проблему работы со звуком. На данный момент QtMultimediaKit для Android не работает. Проблема связана с банальной нехваткой либы FFmpeg, но багу фиксить не спешат, т.к. у комьюнити пока другие приоритеты. Разбираться, как работает Necessitas мне абсолютно не хотелось, да и нашелся человек в списках рассылки, который проделал необходимую работу, но почему-то не поделился результатами своего труда. Я написал ему письмо, но ответа к сожалению не последовало. Ну и ладно, подумал я… И тут на одном из форумов наткнулся на предложение использовать OpenSL ES, который появился в Android начиная с версии 2.3. Скажу сразу, что у меня ничего путного не получилось. Что такое OpenSL ES я до этого не знал. А значит, надо заполнять пробелы в знаниях. Тем более повод есть.

Назвать OpenSL ES библиотекой у меня даже как-то язык не поворачивается. Это скорее спецификация для 2D и 3D аудио на языке Си. Первый взгляд на API привел меня в ужас. Все показалось каким-то мрачным и запутанным. Но, как говорится, не все то золото, что блестит. Позже, пытаясь реализовать QAndroidMediaPlayer, я проникся духом “библиотеки” и первое мнение рассеялось в пух и прах.
Читать полностью »

Всем доброго времени суток!
В статье описывается реализация паттерна проектирования MVC для приложений использующих PyQt, на примере программы сложения двух чисел. Помимо описания реализации паттерна приводится описание процесса создания приложения.

0 Введение

MVC – паттерн проектирования позволяющий эффективно разделить модель данных, представление и обработку действий. В состав MVC входят три паттерна проектирования: наблюдатель, стратегия и <a rel="nofollow"Читать полностью »

Прошло совсем немного времени после открытия предзаказа и поступления в продажу 6-го Лайтпака. Буквально на днях я получил заветную посылку с последней ревизией устройства. Если коротко, Лайтпак — это фоновая подсветка монитора или телевизора. В продаже есть 2 вида подсветки, это версия для монитора и версия для телевизора. В версии для телевизоров есть отдельный блок питания и вместо 10 отдельных светодиодов используются 30 светодиодов на лентах. В итоге получается по 3 диода на канал, и за счет этого площадь подсветки увеличивается. Подсветку я ставил на монитор диагональю 24", в будущем планируюЧитать полностью »

Прошло совсем немного времени после открытия предзаказа и поступления в продажу 6-го Лайтпака. Буквально на днях я получил заветную посылку с последней ревизией устройства. Если коротко, Лайтпак — это фоновая подсветка монитора или телевизора. В продаже есть 2 вида подсветки, это версия для монитора и версия для телевизора. В версии для телевизоров есть отдельный блок питания и вместо 10 отдельных светодиодов используются 30 светодиодов на лентах. В итоге получается по 3 диода на канал, и за счет этого площадь подсветки увеличивается. Подсветку я ставил на монитор диагональю 24", в будущем планируюЧитать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js