Qt (произносится [ˈkjuːt] (кьют) как «cute» или неофициально Q-T (кью-ти)) — кроссплатформенный инструментарий разработки ПО на языке программирования C++.

Основная информация

Qt (произносится [ˈkjuːt] (кьют) как «cute» или неофициально Q-T (кью-ти)) — кроссплатформенный инструментарий разработки ПО на языке программирования C++.

Есть также «привязки» ко многим другим языкам программирования: Python — PyQt, PySide; Ruby — QtRuby; Java — Qt Jambi; PHP — PHP-Qt и другие.

Со времени своего появления в 1996 году библиотека Qt легла в основу тысяч успешных проектов во всём мире. Кроме того, Qt является фундаментом популярной рабочей среды KDE, входящей в состав многих дистрибутивов Linux.

Рейтинг: 0
Создана 6 лет назад
Владелец root

Стена группы

Загрузка...
5 лет назад
#

Qt: Embedded World 2017 и roadmap


Большая часть информации по Qt (новости, информация на сайте, статьи, публикации в блоге, аккаунты в соц.сетях) доступна только на английском языке. И хотя каждый разработчик желательно-обязательно должен владеть английским, для многих языковой барьер по-прежнему является проблемой.

Я работаю в The Qt Company (в офисе Осло, Норвегия), и видя как обделено вниманием весьма немаленькое русскоязычное сообщество, я решил написать эту статью на русском и рассказать немного о прошедшей на позапрошлой неделе в Нюрнберге конференции Embedded World 2017, а также поделиться планами компании на будущие релизы Qt. Но хотя статья и на русском, ссылки всё же ведут на английскую документацию, а также некоторые термины я решил оставить в оригинале.

Подробнее
5 лет назад
#

Qt at Embedded World 2017


5 лет назад
#

One framework to rule them all — Introducing Qt 5.8


5 лет назад
#

Разработка для Sailfish OS: Модульное тестирование Qt/C++ под Sailfish OS


Здравствуйте! Эта статья является продолжением цикла статей о тестировании Sailfish-приложений (предыдущая статья), и на этот раз мы рассмотрим модульное тестирование С++ в рамках проектов для Sailfish OS.

Тестируемое приложение

Итак, у нас имеется элементарный пример приложения под Sailfish OS, который доступен в репозитории данного проекта (о том, как создать приложение для Sailfish OS можно прочитать в одной из предыдущих статей). QML составляющая содержит единственный экран с приветствием.
import QtQuick 2.0
import Sailfish.Silica 1.0

ApplicationWindow 
{
  Label  
  { 
    x: Theme.horizontalPageMargin 
    text: "Hello Sailors" 
    color: Theme.secondaryHighlightColor 
    font.pixelSize: Theme.fontSizeExtraLarge 
  }
}

Подробнее
5 лет назад
#
Разработка для Sailfish OS: работа с уведомлениями на примере приложения для ведения заметок

Здравствуйте! Данная статья является продолжением цикла статей, посвященных разработке приложений для мобильной платформы Sailfish OS. На этот раз речь пойдет о приложении для ведения заметок, позволяющее пользователю хранить записи, помечать их тэгами, добавлять к ним изображения, фотографии, напоминания, а так же синхронизировать с учетной записью Evernote.

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

Описание приложения

Главный экран приложения представляет собой список записей пользователя, где на каждом элементе списка отображается заголовок заметки, ее описание (или его часть, если описание не умещается полностью), а так же изображение, если оно добавлено. Элементы списка так же имеют контекстное меню, позволяющее удалить заметку или открыть диалог для ее редактирования. А по нажатию на элемент списка открывается экран показывающий всю информацию о данной заметке.
Поговорим детально о пользовательском интерфейсе приложения. Главный экран приложения представляет собой список записей пользователя, где на каждом элементе списка отображается заголовок заметки, ее описание (или его часть, если описание не умещается полностью), а так же изображение, если оно добавлено. Элементы списка так же имеют контекстное меню, позволяющее удалить заметку или открыть диалог для ее редактирования. А по нажатию на элемент списка открывается экран показывающий всю информацию о данной заметке.

SailfishOS

SailfishOS

Подробнее
5 лет назад
#
Разработка для Sailfish OS: работа с LocalStorage

Здравствуйте! Данная статья является продолжением цикла статей, посвященных разработке для мобильной платформы Sailfish OS. В этот раз мы решили рассказать о приложении для контроля финансов, позволяющее пользователю вести журнал доходов и расходов, а также откладывать средства для осуществления целей. Стоит упомянуть, что данное приложение является одним из победителей хакатона по Sailfish OS в Ярославле, организованного компанией «Открытая Мобильная Платформа» и ассоциацией FRUCT.

Описание

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

Модуль для работы с операциями позволяет пользователю фиксировать доходы и расходы, а также отображать эти операции в виде журнала:

Sailfish OS

Sailfish OS

Как можно увидеть из скриншота экрана добавления, для каждой операции определена категория. Данная классификация помогает пользователю проще ориентироваться в своих финансах. Помимо стандартных категорий, пользователь может добавлять свои, тем самым подстраивая приложение под свой образ жизни.

Подробнее
5 лет назад
#
Разработка для Sailfish OS: работа с D-Bus

Всем доброго времени суток! Данная статья продолжает цикл статей, посвященных разработке для мобильной платформы Sailfish OS. Поскольку в основе операционной системы лежит ядро Linux, то в Sailfish OS изначально доступны некоторые «вкусности», пришедшие из мира Linux. Одной из таких «вкусностей» является система межпроцессного взаимодействия D-Bus. Для данной статьи я буду считать, что читатель уже знаком с тем, что это за система, для чего она нужна и как ею пользоваться (в противном случае, информацию об этом достаточно легко найти в сети, например на официальном сайте или на opennet).

Несмотря на то, что D-Bus изначально поддерживается в Sailfish OS, управлять им возможно только из терминала или из приложений (если в них это уже заложено). Именно поэтому возникла идея создания визуального клиента к системе D-Bus для Sailfish OS, которые позволит просматривать сервисы, зарегистрированные в системе и взаимодействовать с ними с помощью графического интерфейса. Другими словами, создать аналог D-Feet или Qt D-Bus Viewer для Sailfish OS.

Любое приложение в системе, может создать свой собственный сервис (или службу), который будет реализовывать один или несколько интерфейсов, которые описываются методами, сигналами и свойствами. Так же приложение может взаимодействовать с другими приложениями через их сервисы, зарегистрированные в D-Bus. Например, в Sailfish OS зарегистрирован сервис net.connman, реализующий интерфейс net.connman.Technology по адресу /net/connman/technology/bluetooth. Данный интерфейс содержит, в том числе, и метод SetProperty(). Вызвав его следующим образом — SetProperty(«Powered», true) — можно включить Bluetooth на устройстве.

Собственно, функционал приложения должен повторять таковой для аналогов. Т.е. приложение должно позволять просматривать список сервисов зарегистрированных в D-Bus (как сессионных, так и сервисных), для каждого такого сервиса просматривать список возможных путей, для каждого пути список интерфейсов, а для каждого интерфейса показывать списки методов, свойств и сигналов. В дополнение приложение так же должно позволять вызывать эти самые методы и читать/изменять свойства.

Подробнее
5 лет назад
#
Разработка для SailfishOS: таймеры и реализация экспорта в файл

Мы уже писали про опыт разработки нашего первого приложения для мобильной платформы Sailfish OS. Но на этом решили не останавливаться и сразу взялись за второе. Целью было создать приложение, с помощью которого пользователь мог бы вести учёт своего рабочего времени, планировать задачи и предоставлять информацию о проделанной работе, иными словами – разработать персональный мобильный тайм-трекер.

Описание приложения

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

Так как разработка самой структуры приложения и его интерфейса уже была описана в предыдущих статьях цикла разработки для Sailfish OS (путь от начала разработки до создания первого приложения вы можете отследить здесь и тут), то в этой статье будет описан только функционал, который отличается от реализованного ранее и наиболее интересен с точки зрения его реализации. В нашем приложении — это таймеры задач и экспорт списка задач.

Таймер

Для измерения длительности работ в приложении используется механизм таймера. Процесс отсчета времени осуществляется с помощью стандартного элемента Qt Timer, у которого выставлен интервал обновления 1000 миллисекунд.

Timer {
  id: stopwatch
  interval: 1000
  repeat: true
  running: true
  triggeredOnStart: true
  onTriggered: {
    if (timerActive) {
      var currentTime = new Date ();
      var differeceInTime = (currentTime.getTime() - previousTime.getTime());
      previousTime = currentTime;
      updateData(differentInTime);
    }
  }
}

function updateData(usec) {
  elapsedTime += usec;
  taskTimerString = getTimeString(elapsedTime);
}

Подробнее
5 лет назад
#
Qt / QML REST Client

Увидел сегодня в ленте статью и вспомнил, что хотел ведь про свой проект пару строк на Хабр написать.

В общем, некоторое время я работал техлидом с программистами iOS/Android, которые много использовали в своем коде API на Django/Yii2/проприетарщине. И посмотрев со стороны на инструменты, имеющиеся у них для работы с REST API, я решил нечто подобное добавить и в Qt, т.к. нормальных средств по работе с REST с использованием Qt моделей не существовало.

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

REST Client

Итак, вот что мы обсудим:

Идея и фичи
  • Архитектура

  • Пример использования

  • Исходный код и приложение-пример


Подробнее
Den
5 лет назад
#
Пишем Rest API клиент на Qt5

Введение

Последнее время я занимаюсь разработкой настольного Rest API клиента. Довольно большая часть работы состоит во взаимодействии с сервером. Для оптимизации обработки запросов был написан класс Requester, обладающий следующими особенностями:

  • возможность отправлять как https, так и http запросы

  • использование одной функции для всех типов запросов

  • возможность получить все данные по запросу с сервера, а не одну страницу(n записей)


Программисту, использующему этот класс, придется работать тремя функциями:

void initRequester(const QString& host, int port, QSslConfiguration *value);

    // функция посылает один запрос
    void sendRequest(const QString &apiStr,
                       const handleFunc &funcSuccess,
                       const handleFunc &funcError,
                       Type type = Type::GET,
                       const QVariantMap &data = QVariantMap());

     //функция будет посылать GET запрос пока не будет достигнута последня старница
    void sendMulishGetRequest(
                       const QString &apiStr,
                       const handleFunc &funcSuccess,
                       const handleFunc &funcError,
                       const finishFunc &funcFinish);

funcSuccess — callback, вызываемый в случае, если запрос выполнился успешно
funcError — callback в случае ошибки

typedef std::function<void(const QJsonObject &)> handleFunc;
    typedef std::function<void()> finishFunc;
    enum class Type {
        POST,
        GET,
        PATCH,
        DELET     
    };

DELET — не опечатка, так как с DELETE не собирается под WINDOWS.

Подробнее
5 лет назад
#
Управляем стандартным плеером Sailfish OS с помощью голосовых команд

Многие знают и пользуются такими возможностями операционной системы Android, как Google Now и Google Assistant, которые позволяют не только вовремя получать полезную информацию и что-либо искать в интернете, но и управлять устройством с помощью голосовых команд. К сожалению, Sailfish OS (операционная система, разрабатываемая финской компанией Jolla и российской компанией Открытая мобильная платформа) не предоставляет такой возможности «из коробки». Как результат, было решено восполнить отсутствие этих удобств своими силами. Одной из функций разрабатываемого решения является возможность управления музыкальным плеером с помощью голосовых команд, техническая сторона которой и будет рассмотрена в данной статье.

Для внедрения распознавания и выполнения голосовых команд потребуется пройти четыре простых шага:
  1. разработать систему команд,

  2. реализовать распознавание речи,

  3. реализовать идентификацию и выполнение команд,

  4. добавить обратную голосовую связь.


Предполагается, что, для лучшего понимания материала, читатель уже имеет базовые знания о C++, JavaScript, Qt, QML и Linux и ознакомился с примером их взаимодействия в рамках Sailfish OS. Также может быть полезным предварительное знакомство с лекцией по смежной тематике, проведённой в рамках Летней школы Sailfish OS в Иннополисе летом 2016 года, и другими статьями посвященными разработке под данную платформу, которые уже были опубликованы на Хабре.

Подробнее
5 лет назад
#
Наше первое приложение для SailfishOS

Всем доброго времени суток! В данной статье хотелось бы рассказать, как мы разработали своё первое приложение для платформы SailfishOS (о разработке под которую уже был ряд статей).

SailfishOS

Задачей было написать приложение, с помощью которого можно было бы изучать и запоминать литературные термины. Так как реализовать обычный словарь с толкованием слов слишком просто и скучно, то было принято решение: организовать процесс обучения через взаимодействие с пользователем. Рассмотрев все доступные варианты построения взаимодействия с пользователем, было решено сделать обучение в виде тестов.

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

Кроме описанного выше процесса обучения, необходимо было реализовать просмотр списка терминов, которым мы будем учить, чтобы пользователь мог знать, что же все-таки с него будут спрашивать. Так же было запланировано отслеживание и сохранение прогресса в изучении, с целью показать пользователю, каких успехов он достиг в изучении слов.

Особенности приложения

Собственно сам словарь был любезно предоставлен нам сотрудниками кафедры иностранных языков нашего ВУЗа (ЯрГУ им. П. Г. Демидова). Он был в обычном текстовом виде, поэтому для удобства использования мы перенесли его в xml формат. Получился xml документ состоящий из элементов вида:

<term>
    <name>
      <text>Epenalepsis</text>
    </name>
    <synonym>
      <text>Polysyndeton</text>
      <transcription>[ˌpɒlɪˈsɪndɪtən]</transcription>
    </synonym>
    <description>Use of several conjunctions</description>
    <context>He thought, and thought, and thought…</context>
</term>

Подробнее
6 лет назад
#
Разработка для SailfishOS: меню

Здравствуйте! Очередное продолжение цикла статей о разработке для мобильной платформы SaifishOS. На этот раз я хочу рассказать о том, как в приложении реализовать различного вида меню. Данная тема заслуживает отдельной статьи, поскольку меню в SailfishOS сами по себе выглядят достаточно интересно и не похожи на меню в других мобильных платформах.

Собственно, основной вид меню в Sailfish — это меню, которое показывается сверху экрана. Поскольку в самой платформе большой акцент сделан именно на жесты и на быстрое управление с их помощью, то и для того, чтобы показать данное меню используется жест — свайп пальцем сверху вниз. Выглядит это следующим образом: если в приложении на экране доступно меню, то вверху экрана появляется светлая полоска:

Sailfish OS

Даже на полноразмерном скриншоте эта полоска плохо различима, однако на реальном устройстве она заметна. Для сравнения ниже приведен скриншот этого же экрана, но уже без меню и, соответственно, с отсутствующей полоской.

Подробнее
Den
6 лет назад
#
Применение Q_GADGET в C++&QtQuick

Смотрю на форумах рунета, люди начинают писать на C++&Qt Quick и используют наследников от QObject, для так называемых типов значений(Value Type). Мартин Фаулер их называет Value Object. Хотя есть макрос Q_GADGET позволяющий использовать QMetaObject c некоторыми ограничениями, но без наследования от QObject. Все что будет описано ниже результат экспериментов с Qt Quick. Буду рад узнать что-то новое из комментариев.

Пример таких типов QPoint, QGeoCoordinate и т.д. Наследоваться от QObject и использовать макрос Q_OBJECT неудобно для таких типов:
  • QObject защищен от копирования;

  • нужно возвращать значение по указателю. Приходится задумываться о CppOwnership/JavaScriptOwnership из перечисления QQmlEngine::ObjectOwnership.


Q_GADGET позволяет нам использовать:
  • Q_ENUM;

  • Q_PROPERTY;

  • Q_INVOKABLE.


Подробнее
Den
6 лет назад
#
О летней школе Sailfish OS 2016

В этой статье я хотел бы рассказать о замечательном событии, произошедшем с 27 по 30 июля – летней школе Sailfish OS, организованной «открытой мобильной платформой» при поддержке университета Иннополис. Если вам интересна перспектива развития Sailfish OS, настоящего Linux на смартфонах или просто интересна еще одна сфера применения QML/C++ — прошу под хабракат.

Sailfish OS 2016

Подробнее
1 3

Авторизация

Войдите, используя Ваш аккаунт

Войти с помощью

Пользователи

Именинники

Elvira
Skyeng
GeekBrains
Lingualeo