Ну что такого сложного может быть в создании скриншота? Казалось бы — позови функцию, любезно предоставленную операционкой и получи готовую картинку. Наверняка многие из вас делали это не один раз, и, тем не менее, нельзя просто так взять и заскриншотить полноэкранное directx или opengl приложение. А точнее — можно, но в результате вы получите не скриншот этого приложения, а залитый черным прямоугольник.
Читать полностью »
Рубрика «qt5» - 3
Скриншотим игры — the hard way
2016-01-01 в 18:38, admin, рубрики: c++, DirectX, dll injection, hook, OpenGL, qt, qt5, Программирование, скриншотыКак подружить QML с чужим OpenGL контекстом. Часть III: Обработка пользовательского ввода
2015-01-31 в 11:27, admin, рубрики: c++, QML, qt, qt quick, qt5, Программирование В данной статье я попытаюсь рассказать о том как передавать события мыши и клавиатуры в QQuickWindow, в случае его использования в связке с QQuickRenderControl. Причиной того, что этому необходимо уделять специальное внимание, является то, что в случае использования QQuickRenderControl, никакого окна на самом деле не создается, соответственно у QQuickWindow нет абсолютно никакой возможности получать какие либо события, и их приходится эмулировать. То же самое касается изменения размеров — об этой операции так же необходимо оповещать в явном виде.
Читать полностью »
Создаём окружение для PyQt5 в Linux MInt (Ubuntu)
2015-01-19 в 9:45, admin, рубрики: mint, pyqt5, python, python3, qt, qt5, Ubuntu
Давно уже до пятой версии обновился Qt и вместе с ним PyQt, но найти информацию по ним в русскоязычном сегменте — задача не из простых. Под катом подробный туториал для тех, кто только начинает знакомиться со связкой Qt + python3.
Цель: собрать и настроить окружение, пройти путь от установки PyQt5 и создания формы в Qt Designer до запуска переносимого бинарника.
QQuickRenderControl, или как подружить QML с чужим OpenGL контекстом. Часть I
2015-01-09 в 14:31, admin, рубрики: OpenGL, QML, qt, Qt Quick 2, qt5 Недавний релиз Qt 5.4, помимо прочего, предоставил в распоряжение разработчиков один, на мой взгляд, очень любопытный инструмент. А именно, разработчики Qt сделали QQuickRenderControl частью публичного API. Занятность данного класса заключается в том, что теперь появилась возможность использовать Qml в связке с любым другим фреймворком, если он предоставляет возможность получить (или задать) указатель на используемый OpenGL контекст.
С другой стороны, в процессе работы над одним из своих проектов, я столкнулся с необходимостью отрисовывать QML сцену на CALayer (Mac OS X), без малейшей возможности получить доступ к родительскому окну. Недельный поиск возможных вариантов решения проблемы показал, что самым адекватным решением будет как раз использование QQuickRenderControl из Qt 5.4, благодаря удачному совпадению, получившего статус релиза одновременно с возникновением вышеупомянутой задачи.
Изначально я предположил что задача плевая, и будет решена в течении пары вечеров, но как же я сильно заблуждался — задача заняла порядка полумесяца на исследования, и еще пол месяца на реализацию (которая все еще далека от идеала).
Читать полностью »
Примечание переводчика: в оригинале очень много маркетинговых оборотов, и, похоже какой-то SEO в тексте. Я постарался местами убирать лишние повторы слова «Qt», но текст всё равно слегка слащав.
Про релиз Qt Creator 3.3 перевод.
Я рад сообщить, что Qt 5.4 выпущен сегодня (10 декабря) и уже доступен для скачивания с qt.io. Вместе с Qt 5.4, мы также выпускаем Qt Creator 3.3 и обновление для Qt для создания устройств под управлением встроенными Linux или Android.
Но сперва давайте о Qt 5.4. Один из главных акцентов, которые я бы хотел сделать на релезе — это Web-технологии, и мы можем показать вам много клевых штук.
В этой статье описывается каким образом изменения, принесенные стандартом С++14 отразились или могут отразиться на разработке Qt приложений. Данная статья ориентирована не только на Qt программистов, но также на всех тех, кому интересно развитие С++. Автор оригинала — Olivier Goffart, являющийся одним из разработчиков Qt moc (meta-object compiler).
Читать полностью »
Доступ к HID-устройствам из программы на Qt под Android
2014-09-26 в 7:32, admin, рубрики: android, libusb, qt, qt5, qt5 for android, Разработка под androidВведение
С выходом Qt 5 появилась удобная возможность расширить список поддерживаемых программой платформ и на мобильные ОС, в частности на Android.
Сам процесс портирования программы с десктопной версии Qt на мобильную свелся к банальной перекомпиляции. Интерфейс и логика завелись сразу, за исключением той части, без которой, собственно, программа бесполезна: обмену с HID-устройством.
Читать полностью »
MS SQL (Win1251) –(?)–> Qt (Unicode)
2014-08-20 в 21:31, admin, рубрики: mssql, qt, qt4, qt5, Unicode, utf-8 Небольшой хак по преобразованию кодировки windows-1251 в MSSQL в Unicode для Qt5.
Читать полностью »
Реализация и тестирование Qt C++ клиента сетевого сервиса с асинхронным интерфейсом на примере Yandex Dictionary Api
2014-08-12 в 13:30, admin, рубрики: c++, c++11, qt, qt5, Yandex API, асинхронное программирование, Яндекс APIЕсть у меня один проект долгострой, в котором использую Yandex Dictionary Api. В процессе разработки решил поделиться опытом создания асинхронного интерфейса к интернет-сервису.
Если у вас есть интерес, как реализовать такой клиент с помощью Qt C++, то этот пост для вас.
Я не стал заострять внимания на тех моментах Qt, которые и так хорошо описаны. В статье я попытался раскрыть, как создавать асинхронные классы в Qt на базе конкретного примера.
Пример программы
Программа посылает на сервер Yandex Dictioanary Api запросы на перевод слов и затем, по мере поступления ответов от сервиса, выводит их на экран.
#include "Precompiled.h"
#include <QtYandexApi/QtYandexApi.h>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QtYandexDictionary yandexDictionary(QtYandexApi::getYandexKeyFromFile("dictKey"));
QObject::connect(&yandexDictionary, &QtYandexDictionary::translated,
[](const QtYaWordTranslation& wordTranslation)
{
if (wordTranslation.isError())
qDebug() << wordTranslation.errorString();
else {
QtYaWord wordForTranslation = wordTranslation.wordForTranslation();
QtYaTranslatedWord translatedWord = wordTranslation.translatedWord();
qDebug() << "n***************";
qDebug() << "Word: " << wordForTranslation.wordName();
qDebug() << "Direction: " << wordForTranslation.fromLanguage() << "-" << wordForTranslation.toLanguage();
qDebug() << "Main translation: " << translatedWord.mainTranslation();
qDebug() << "Synonyms: " << translatedWord.synonyms();
qDebug() << "Examples: ";
for (const auto& example : translatedWord.examples()) {
qDebug() << example.first << "-" << example.second;
}
}
});
QStringList russianWords, englishWords;
russianWords << "дом" << "время" << "легенда" << "ключ" << "клавиатура" << "монитор" << "случай" << "один" << "два" << "три" << "четыре" << "пять" << "шесть";
englishWords << "home" << "time" << "legend" << "key" << "keyboard" << "monitor" << "infection" << "one" << "two" << "three" << "four" << "five" << "success";
for (const QString& word : russianWords) {
yandexDictionary.translate(QtYaWord(word, "ru", "en"));
}
for (const QString& word : englishWords) {
yandexDictionary.translate(QtYaWord(word, "en", "ru"));
}
return a.exec();
}