Небольшой хак по преобразованию кодировки windows-1251 в MSSQL в Unicode для Qt5.
Читать полностью »
Рубрика «qt» - 22
MS SQL (Win1251) –(?)–> Qt (Unicode)
2014-08-20 в 21:31, admin, рубрики: mssql, qt, qt4, qt5, Unicode, utf-8 Здесь меня будет интересовать как сериализовать объект Qt, передать его по сети и поддерживать между оригиналом и копией связь синхронизирующую состояние копии. Использовался Qt 4.8.
Читать полностью »
Реализация и тестирование 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();
}
Популярный фреймворк Qt имеет очень удобный механизм управления стилями UI — Qt Style Sheet. Благодаря которому стиль виджетов и окон можно задать в CSS-подобной форме. Стиль может храниться как в ресурсах приложения так и во внешенем файле.
В своей практике постоянно сталкивался с задачей отладить файл стиля в реальном проекте. Если для веб-приложений достаточно нажать F5 в браузере, то на десктопе придется перезапускать приложение, иногда авторизовываться, добираться до нужной формы. Это большая потеря времени. Попробуем сделать инструмент для удобной отладки стилей. Сформулирую пользовательский сценарий:
Хотим править файл стиля и сразу смотреть как это выглядит в любой форме приложения.
cool-old-term — старый добрый терминал
2014-07-29 в 15:00, admin, рубрики: cowsay, CRT, GNU/Linux, linux, qt, qt quick, qt5, terminal, интерфейсы, монитор, олдскул Некто с никнеймом Swordfish90 разрабатывает эмулятор терминала cool-old-term с интерфейсом, напоминающим старые CRT мониторы. Автор признаётся, что мечтал реализовать подобное приложение со времени, когда он впервые сыграл в Fallout III. Swordfish90 пытается сделать олдскульный, но вместе с тем настраиваемый и легковесный эмулятор терминала. Проект разрабатывается с использованием Qt5 и QtQuick, разработка ведётся на Github.
Qt 5.3: низкий старт в мобильной кроссплатформе
2014-07-25 в 18:23, admin, рубрики: mobile development, qt, кроссплатформенная разработкаПриветствую всех, кому интересна кроссплатформенная разработка для мобильных устройств! До недавнего времени относился с огромным скепсисом к инструментариям, позволяющим создавать ненативные приложения, которые работали бы сразу на ряде платформ. Однако в один момент любопытство и желание попробовать что-то новое всё же перевесили сдерживающий рассудок. Выбор пал на Qt 5.3. Почему? Потому что Qt открыт и бесплатен для некоммерческого использования, имеет продолжительную историю (вышел в свет в 1996 году) и достаточное количество качественных проектов (навскидку — Skype, приложения 2ГИС), реализованных с использованием данных библиотек.
Цель публикации — познакомить читателей с мобильной разработкой на последней версии Qt: показать реализацию основных элементов клиент-серверных приложений и осветить возможные «подводные камни» при работе с библиотеками Qt.
Требуемый уровень подготовки и опыта — минимальный (знание основ C++, элементарное умение конфигурации локального сервера).
Материал для удобства восприятия разбит на 4 части: «Подводные камни», История одного проекта и работа над ошибками, Основы клиент-серверной разработки, Резюме.
Читать полностью »
QtContribs=Harbour+QT
2014-07-23 в 8:32, admin, рубрики: mysql, open source, qt, кроссплатформенная разработка, ПрограммированиеДоброго времени суток.
В посте «Harbour — новое лицо xBase family» Александр Кресин рассказал, что такое Harbour.
Проект QtContribs — это расширение Harbour для использования Qt.
Т.е. все, кто знаком с dbase-языками программирования (foxpro, clipper и др.) смогут, используя QtContribs, писать кроссплатформенные приложения с графическим интерфейсом.
Учитывая изложенное в посте «Разработка Qt-приложения с доступом к MySQL под Android», возможности для разработки под Android + mySQL существуют.
Но главный разработчик библиотеки QtContribs (Pritpal Bedi) консервативен и не развивает ту часть, которая связана с QtSql.
Я посчитал это неправильным и немного поучаствовал в развитии этого направления.
Далее покажу пример использования QSqlTableModel и QTableView.
Читать полностью »
Про QML и новое REST API Яндекс.Диска
2014-07-20 в 10:46, admin, рубрики: api, JS, QML, qt, rest, SDK, Ubuntu, ubuntu.sdk, Yandex, Убунтариум, Яндекс API Доброго времени суток, друзья!
В последнее время на хабре совсем перестали появляться статьи на тему QtQuickQML Про Ubuntu SDK (основанном на QtQuick) и вовсе тишина, а ведь в настоящий момент это основной инструментарий, предлагаемый для разработки приложений под Ubuntu (ни много ни мало самый популярный Linux-дистрибутив). Захотелось в меру своих возможностей исправить эту ситуацию с помощью написания данной статьи! Объять необъятное пытаться не стоит, поэтому начну, пожалуй, с повествования о том, как мне удалось заменить большой объем кода на C++ кодом на QML (в приложении под Ubuntu SDK). Если вам стало интересно, а может быть еще и непонятно, причем тут Яндекс.Диск, то прошу под кат!
Читать полностью »
Здравствуйте, уважаемые читатели!
Данным постом хочу представить сообществу проект, который время от времени писался мной последний год: SASM (SimpleASM) — IDE для разработки программ на языке ассемблера x86 и x86-64.
SASM — простая кроссплатформенная (доступна на Windows и Linux) среда разработки для языков ассемблера NASM, MASM, GAS, FASM с подсветкой синтаксиса и отладчиком. Программа работает «из коробки» и хорошо подойдет для начинающих изучение языка ассемблера. Основана на Qt. Распространяется по свободной лицензии GNU GPL v3.0.
Исходники лежат в репозитории на GitHub.
Бинарники можно скачать на сайте программы.
Под катом Вы найдете немножко истории и более подробное описание возможностей.
Читать полностью »
Простой спрособ подключения произвольного видеоисточника в Qml
2014-07-14 в 7:29, admin, рубрики: c++, QML, qt, QtMultimediaПреамбула
Все нижеизложенное приводится в контексте Qt версии 5.3.1 (как наиболее актуальной на данный момент), но имеет смысл в контексте любой версии ветки 5.x, а возможно даже 4.8.x (не проверял за ненадобностью).
Операционная система — Windows, среда разработки — QtCreator 3.1.2 в связке с MinGW и gcc 4.8.2 От использования других платформ/IDE/компиляторов суть не меняется.
В качестве иточника видеоданных был выбран самый простой из доступных вариантов, а именно — рабочий стол. Т.е. приложение будет отображать копию всего что происходит на рабочем столе. В многомониторных конфигурациях, в качестве источника, будем использовать основной экран.
Читать полностью »