Метка «Qt» - 9

Оказывается, 31 января вышло обновление Qt 5.0.1 с более 400 улучшений (как сообщается) по сравнению с Qt 5.0.0. Новая версия не приносит новой функциональности, лишь исправления и улучшения.
Читать полностью »

На хабрахабре уже была статья «Применение шейдеров OpenGL в QML», в которой рассмотрены теория и примеры использования шейдеров в Qt Quick 1.0. Прошло больше года, фреймворк претерпел массу изменений: состоялся релиз Qt 5 и шейдеры теперь являются частью Qt Quick 2.0, а не вынесены в отдельный модуль и синтаксис их использования, естественно, также изменился. Сразу оговорюсь, что с GLSL я сам знаком весьма посредственно, зато имею опыт работы с QML, поэтому в этой статье хочу разобрать работу с фрагментным шейдером на примере компонента LedScreen, разработанного сообществом QUIt Coding (наверняка многие из вас видели его в демо-ролике на YouTube):
QtQuick 2.0 и шейдеры OpenGL
Читать полностью »

В процессе разработки нескольких Интернет-сервисов мы заметили, что значительная часть их функционала является общей, и руководствуясь принципом DRY (Don't Repeat Yourself — не повторяйся), приняли решение вынести общий функционал в отдельный модуль.

К модулю были предъявлены следующие требования:

  • независимость от использующих его сервисов;
  • простота «клиентского» кода;
  • многопоточность и высокая скорость работы.

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

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

Мы объединили две эти идеи и сделали проект, обладающий следующими фичами:

  • Публикация скриншотов и исходников по нажатию хоткея
  • Open Source — можете форкнуть / поднять на своём сервере / добавить новые фичи
  • Прямая ссылка на изображения, отсутствие рекламы
  • Кроссплатформенность
  • Устойчивость к высоким нагрузкам (хостимся в облаке)

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

Где-то здесь не так давно был пост о нововведених в Qt5. Всё вроде выглядит замечательно, но как же обстоят дела на самом деле в отношении уже имеющихся приложений? В этой статье я рассмотрю пример портирования одного из своих проектов на Qt5 с сохранением совместимости исходников с Qt4.

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

При написании много-сервисной системы в корой каждый сервис должен быть многопоточен, столкнулись с проблемой использования подключения к базе данных. Сервисы разрабатываются на QT, поэтому использовали модуль QtSql для взаимодействие с БД.

Проблемы

  1. Для каждого потока необходимо свое собственное подключение к БД (QSqlDatabase). При использовании одного подключения из разных потоков возникаем ошибка сегментирования.
  2. Т.к. в текущий момент времени возможно держать открытыми ограниченное число подключений к БД, необходимо реализовать захват, освобождение и ожидание подключения потоками.
  3. В контексте потока, для правильной работы с транзакциями необходимо работать только с одним подключением. Например: Сущность заказ содержит в себе сущности Товар. При сохранении Заказа должны сохранится все товары. Если при сохранении товара возникает исключительная ситуация, то вся транзакция по сохранению заказ должна отменится.
  4. Библиотека должна уметь работать с несколькими БД одновременно, причем разных типов (Mysql,PostgreSQL)

Решение

В итоге у нас получилось 3 класса:

  • Connection — класс обертка отвечающий за работу с БД: Подключение, выполнение и обработка результатов запросов.
  • ConnectionManager — синглтон хоронящий в себе подключени и отвечает за выдачу и освобождение подключений.
  • ManagedConnection — класс обертка для автоматизации захвата и освобождения подключения.

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

Всех с наступающим!

Digia предлагает Qt5 для Windows только скопилированную под Visual Studio 2010, причем с параметрами, которые не для всех идеальны. В частности это

  • Собственно, сама необходимость использовать только VS2010
  • зависимость Qt5Core.dll (и соответственно вашего приложения) от ICU. Это следущие DLL-ки: icuin49.dll, icudt49.dll, icuuc49.dll
  • зависимость Qt5Gui.dll от Angle Library. Это следущие DLL-ки — libEGL.dll, libGLESv2.dll
  • зависимость от Visual C++ 2010 Runtime (msvcr100.dll, msvcp100.dll). Для большинства это пожалуй не минус, т.к. в случае 2008 студии идут другие DLL-ки (msvcp90.dll и msvcr90.dll). Однако, во-первых последние стоят на многих машинах, а во-вторых в конце статьи будет приведет удобный способ таскать их с собой без необходимости устанавливать Microsoft Visual C++ 2008 Redistributable Package при установке вашего приложения.

В конце также будет рассмотрен вопрос последущего распространения приложений.
Читать полностью »

Они все-таки успели!
Буквально менее часа назад, новый владелец Qt Framework — компания Digia, объявило о выходе долгожданного релиза Qt 5.0

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

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

Сказано — сделано. Под катом вывод формулы, код фрагментного шейдера и небольшое демо.
Читать полностью »

Привет, мой, космос Хабрахабр!
image
Ровно неделю назад я написал пост о выходе Qt 4.8.4, а сегодня нас ждет новый релиз! Поздравляю!

На сегодня это Qt 5.0 RC (первый релиз-кандидат). Подробности, собственно-говоря, под катом.

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


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