Занимаюсь сейчас разработкой проигрывателя видео под Windows. И «завис» на некоторое время над задачей — после перехода на Qt, видео в проигрывателе начинает моргать и исчезать (см. видео).
Попытки переопределить QWidget::paintEvent невозможны из-за того, что Qt выполняет заливку на (https://qt-project.org/doc/qt-4.8/qwidget.html#autoFillBackground-prop) перед QWidget::paintEvent.
Попытка переопределить WM_PAINT и WM_ERASEBACKGOUND в QWidget::winEvent тоже не удалась, т.к. paintEvent может вызываться не только из WM_PAINT, но и другими сервисами по неизвестному мне алгоритму.
Поэтому ниже приведу решение как выходил из этой ситуации.
Читать полностью »
Рубрика «qt» - 31
Мерцание видео при использовании Qt widget и Directshow
2013-03-15 в 8:31, admin, рубрики: directshow, qt, WinAPI, видео, видеоплеер, Программирование, Работа с видео, метки: directshow, Qt, WinAPI, видео, видеоплеерQt 5 для Android: превью
2013-03-14 в 7:24, admin, рубрики: android, necessitas, QML, qt, Qt 4, Qt 5, qt quick, Qt Software, портирование, разработка, Разработка под android
Первый коммит “Android mkspecs and semaphore” в стремлении портировать Qt 4 на Android был совершен на Рождество 2009 года румынским разработчиком BogDan Vatra.
22 января 2010 года он закоммитил “A small step for Qt, a giant leap for android” с работающим плагином графической системы и возможностью запуска приложений на реальных Android-устройствах. Чтобы отпраздновать это событие, он выложил видео с демонстрацией работы.
20 февраля 2011 года он объявил о первом пригодном для разработки релизе Qt 4 для Android под названием Necessitas.
В течение последних 4 лет BogDan, при поддержке таких же, как он, энтузиастов, продолжает разрабатывать Necessitas в свободное от работы время.
8 ноября прошлого года BogDan согласился с добавлением результата его трудов в Qt 5 и передачей порта в Qt Project.
4 января он отправил первую версию Qt 5 для Android в WIP-бранч (Work In Progress), а недавно мы интегрировали её в «dev» бранч, что означает, что этот проект станет частью версии Qt 5.1, когда она будет выпущена.
В этой предварительной версии мы сфокусировались на опыте разработчиков, чтобы вы могли легко запускать и тестировать свои приложения на Android-устройствах. И хотя ничто не мешает вам распространять приложения с Qt 5.1 через app store, мы рекомендуем не делать этого и дождаться релиза Qt 5.2, потому что мы хотим улучшить поддержку ещё больше: внести дополнительные возможности для развёртывания приложений, добавить изысканности в целом, улучшить поддержку Android API, позволив расширить ваше приложение Java-кодом или сопоставленным ему C++ API.
Читать полностью »
Использование Loader в QML
2013-03-12 в 23:30, admin, рубрики: javascript, QML, qt, qt quick, Qt Software, qt4, qt5, Программирование, метки: QML, Qt, qt quick, qt4, qt5, ПрограммированиеДоброго времени суток! В этой статье я расскажу про такой компонент из QML как Loader.
Он позволяет создать контейнер, в который затем можно вложить необходимый qml-элемент, использовать разные элементы в зависимости от состояния программы, а также сделать редко используемые части загружаемыми по требованию и сэкономить ресурсы. Loader является контейнером для QML-компонента и сам по себе не отображается.
Я рассматриваю компонент из QtQuick 2.0 которая входит в Qt пятой версии. В более ранней версии этот компонент также есть, но функционал немного меньше.
Мартовская Хабравстреча в Киеве
2013-03-12 в 21:28, admin, рубрики: hp-ux, qt, windows phone, доклады, киев, хабравстреча, я пиарюсь, метки: hp-ux, Qt, windows phone, доклады, киев, хабравстречаСоединяем Qt-сигнал с простой функцией и лямбда
2013-03-06 в 12:47, admin, рубрики: c++, c++11, qt, Qt Software, метки: c++11, Qt, qt softwareУ многих программистов, работающих с Qt, наверняка возникало навязчивое желание соединить сигнал, посылаемый неким наследником QObject, c простой функцией, не являющейся слотом или даже членом некоторого класса. Однако если весь проект построен на объектах (как обычно и бывает), да и все они наследуются от QObject, то добавить функцию-слот куда надо не составит труда. А если нет? Если вы, например, из экономии памяти (или по другим соображениям) не хотите наследовать ваш класс от QObject, или же действие слота занимает всего 1 строчку и было бы проще и удобнее написать его в виде лямбда-выражения? Или вы по ряду причин хотите по сигналу вызывать одиночную фунцию, не являющуюся членом класса?
Столкнувшись с этой проблемой, я решил написать класс, который позволяет соединять сигнал не только с функцей-слотом, а ещё и с самой обычной функцией, а при поддержке С++11 — ещё и с лямбда-выражением.
Читать полностью »
Qt для iOS: превью
2013-03-05 в 16:21, admin, рубрики: iOS, QML, qt, Qt 4, Qt 5, qt quick, Qt Software, qt5, портирование, разработка, разработка под iOS, метки: iOS, QML, Qt, Qt 4, Qt 5, qt quick, qt5, портирование
На недавно прошедшей выставке Embedded World 2013 на стенде Qt была представлена демонстрация портируемости приложений: на стоящих в ряд устройствах под управлением iOS, Android и QNX было запущено приложение Qt5 Cinematic Experience. Сообщалось, что это одно и то же приложение: «What is really blowing minds is the consistent performance of the same Qt 5.0 application running on QNX, Android and iOS», однако внимательные пользователи могли заметить отсутствие системы частиц в примере на iPad. Сегодня в официальном блоге Qt появился анонс, раскрывающий нюансы портируемости.
Читать полностью »
Организация сетевого взаимодействия на Qt
2013-03-05 в 6:28, admin, рубрики: c++, qt, Qt Software, RPC, Анализ и проектирование систем, метки: Qt, RPC В данной статье я бы хотел рассказать об одном из вариантов организации сетевого взаимодействия в программах, написанных на Qt, используя библиотеку QexRemint. Эта библиотека позволяет сериализовать/десериализовать сигналы и слоты. Дописав к ней сетевую часть, можно получить отличный и удобный механизм для удаленного вызова процедур (Remote Procedure Call).
Читать полностью »
Привязка свойств и декларативный синтаксис в C++
2013-03-03 в 18:59, admin, рубрики: c++, c++11, QML, qt, Qt 5, qt quick, Qt Software, ПрограммированиеQtQuick и QML образуют по-настоящему хороший язык для разработки пользовательских интерфейсов. Привязки QML очень производительны и удобны. Декларативный синтаксис действительно приятен в работе. Возможно ли сделать то же самое на C++? В этом посте я покажу рабочую реализацию привязки свойств на чистом C++.
Внимание: это было сделано для забавы, а не для использования в реальном проекте.
Читать полностью »
Использование моделей в Qt
2013-03-03 в 17:15, admin, рубрики: mvc, qt, Qt Software, Программирование, метки: mvc, Qt, ПрограммированиеЗа последний год пришлось довольно много работать с Model/View фреймворком Qt. Приходилось как писать собственные модели, так и переделывать существующие. И вот, после созерцания очередного творения, решил представить общественности некоторые наработки.
Начнем с очевидного:
Не используйте виджеты
Все эти QTableWidget
, QListWidget
и QTreeWidget
— не для вас.
Использование MVC фреймворка не составляет проблемы. В простейшем случае, можно использовать готовые модели, которые предоставляет Qt. Количество кода и его сложность при этом не растет, зато удается избежать всевозможных проблем роста. Разделение модели и отображения с самого начала позволяет с легкостью добавлять такие вещи как сортировка или фильтрация, не переписывая при этом половину кода.
Одни плюсы, а минусов, при этом, не замечено.Читать полностью »
QML и C++. Гоняем данные, оцениваем скорость взаимодействия
2013-03-02 в 10:21, admin, рубрики: c++, QML, qt, Qt Software, QtQuick, Программирование, метки: c++, QML, Qt, QtQuickО том как отправлять данные из QML в C++ и после манипуляций с ними возвращать их (данные) обратно, было уже неоднократно рассказано. В большинстве статей приводятся одни и те же примеры или, в лучшем случае, слегка измененные авторами статей.
Давайте рассмотрим пару самых явных способов передавать данные из QML в C++ и обратно. Также оценим их эффективность.Читать полностью »