11 декабря 2015 г. 10:18

QML

Qt, QML, Android, Android Manifest, manifest

Когда приходит время вести разработку под Android на Qt, то Мы рано или поздно приходим к необходимости работать с файлом AndroidManifest.xml. В данном файле Мы имеем возможность указать определённые принципиальные настройки поведения для нашего приложения, например ориентацию экрана, или основную тему приложения.

Но по умолчанию Android Manifest в Qt Creator не создаётся. Чтобы начать с ним работать, необходимо будет его создать в параметрах сборки проекта.

Пошаговая работа с Android Manifest

Первый шаг

Для этого необходимо зайти во вкладку Проекты и в ней найти необходимый нам комплект сборки. Выбрать пункт Сборка и в нём найти пункт Собрать Android APK. Развернём этот пункт кликнув на "Подробнее".

Здесь Вы сможете выбрать целевой уровень SDK и настроить параметры сборки APK.

24 ноября 2015 г. 9:11

QML

База данных, SQLite, Qt, QML, Android, DataBase, Model, View, MVC

Небольшой пример по работе с базой данных в QML Qt . В данном уроке сводится воедино информация о применении сигналов и слотов в QML Qt , о доступе к C++ классам из QML слоя, реализации интерфейса приложения на QML, а также о реализации модели/представлении для таблицы базы данных.

База данных содержит таблицу со списком людей, в которой имеется четыре колонки:

  • id (INTEGER) - уникальный номер записи;
  • FirstName (VARCHAR (255)) - Имя;
  • SurName (VARCHAR (255)) - Фамилия;
  • Nik (VARCHAR (255)) - Ник.

Приложение должно реализовывать удаление и добавление записей в базу данных через интерфейс приложения. Для добавления записей в Базу данных будет использоваться три поля для ввода данных и кнопка, которая инициализирует добавление данных в базу данных SQL . Добавление записей в таблицу осуществляется через класс обёртку предназначенным для этого методом.Также в приложении присутствует класс ListModel , который реализует модель представления данных для отображения информации в TableView в слое QML.

9 ноября 2015 г. 4:03

QML

ListView, ListModel, TextInput, Model, Delegate, QML, Qt, Android, View

Работа с ListView в QML является довольно частым аспектом при разработке приложения под Android, поскольку очень многие приложения имеют в своём функционале построение списков с данными, записями, параметрами и т.д. Также это справедливо и при разработке приложений под Desktop на QML принцип будет аналогичен под обе платформы.

Для рассмотрения передачи информации в список предлагаю внимательно рассмотреть следующий вариант взаимодействия с ListView.

Принцип представления данных в ListView

Объект ListView имеет два важных свойства:

  1. delegate - который определяет внешний вид одного элемента в ListView
  2. model - в которую помещаются данные каждого элемента

В качестве модели представления данных можно использовать объект ListModel в котором содержатся данные для каждого элемента в списке. При этом данные присваиваются переменным, которые были присвоены определённым свойствам объектов в delegate. В ниже приведенном рисунке delegate имеет два объекта Text, свойствам text которых присвоены переменные text_first и text_second. Данные переменные определяют, куда буду подставляться данные из каждого ListElement в ListModel. Как видно из рисунка, каждый ListElement имеет два свойства, название которых идентично переменным, которые присвоены в delegate. По сути данные переменные являются ролями, по которым подставляются значения из ListModel. Таким образом получаем ListView с текстовыми полями, которые заполнены теми данными, которые были внесены в каждый ListElement в ListModel.

26 октября 2015 г. 13:25

QML

Android, ListItem, ListModel, ListView, QML, Qt

В статье про динамическое создание виджетов в Qt я уже рассказывал, как создавать и удалять кнопки динамически, а также как с ними взаимодействовать. И там использовался Vertical Layout , а случае с Qml мы сможем использовать ListView Qml, как аналогично используется при программирование в Java под Android. Что, к слову говоря, также применимо при программировании на Qt под Android.

В статье про динамическое создание виджетов использовались для примера объекты класса QButton. В данной статье будут использоваться объекты Button Qml, о кастомизации которых было рассказано в следующей статье . Но кнопки будут размещаться в ListView Qml.

Структура проекта для работы с ListView Qml

На это раз обойдёмся проектом, созданным по умолчанию и даже без дизайнера интерфейсов. Тем более, что на момент написания статьи не все параметры можно было задать в дизайнере. А структура проекта следующая:

  • QmlDynamic.pro - профайл проекта;
  • deployment.pri - файл правил деплоя на целевую платформу;
  • main.cpp - основной файл запуска приложения;
  • main.qml - qml файл с исходными кодами программы
24 октября 2015 г. 3:30

QML

Android, Desktop, QML, Qt, scalable, scalable interface, масштабируемый интерфейс

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

Параметры графического интерфейса, такие как ширина и высота, задаются в Qt в пикселях, но при одинаковом разрешении экрана на компьютере и на смартфоне (например, 1366 на 768 пикселей) получится абсолютно разный результат. На компьютере кнопка размером 40 на 60 пикселей будет удобной, я бы даже сказал, большой, а на экране смартфона по ней уже будет сложно попасть пальцем.

Следовательно при разработке интерфейса одного приложения под множество платформ и экранов необходимо каким-то образом решать проблему масштабируемости интерфейса.

22 октября 2015 г. 12:40

QML

Qt, QML, Android, CalendarStyle, Calendar

В данном уроке хотелось бы рассказать о том, каким образом можно кастомизировать внешний вид объекта Calendar в Qt Qml . Подправить например цвета, шрифт, а также красиво вписать его в диалоговое окно для выбора даты. Поэтому определимся с тем, как должно работать наше приложение и как оно должно выглядеть:

  1. В главном окне приложения будет находиться стандартная кнопка, на которой отображается дата (хотя если хотите, то можете и её кастомизировать );
  2. При нажатии на кнопку открывается диалоговое окно в котором располагается Calendar и две кнопки ("Ok" и "Cancel"). В Calendar устанавливается дата, которая была указана на кнопке;
  3. При нажатии на кнопку "Cancel" ничего не происходит, а диалоговое окно просто закрывается;
  4. При нажатии на кнопку "Ok" диалоговое окно закрывается, а на кнопке главного окна отобразится дата, которая была выбрана в календаре.

Полагаю, что Вы уже успели заметить, что кастомизация интерфейса приложения в Qt QML проходит одинаково, как для Desktop версий, так и для Android. Иначе бы разработка под Qt не считалась кроссплатформенной. Следовательно я не буду сильно вдаваться в разницу настройки отображения диалогового окна для Desktop версии или для Android версии. Этот момент я объяснял в уроке по созданию кастомизированного диалогового окна .

12 октября 2015 г. 11:15

QML

Android, qml, qml button, qml button android, qml custom button, qml custom button android, qt, qt qml

Начну серию уроков по QML Android с кастомизации кнопки, или правильнее сказать со стилизации , поскольку в данном случае такой термин подходит больше. Мы не будем вызывать диалоговые окна в данном уроке, а просто сделаем свой QML Cutom Button , который будет менять цвет при нажатии на него. А для наглядности таких кнопок будет две.

Первая кнопка будет красного цвета с черным ободком и чёрным текстом, а при нажатии она будет менять цвет фона на черный с красным ободком и красным цветом. А вторая кнопка будет иметь те же цвета, но в противоположной последовательности.

Структура проекта QML Custom Button

Проект создаётся в QtCreator как проект приложения Qt Quick с элементами Quick Controls. Фактически там уже будет менюбар, несколько диалогов и пара кнопок. Так вот, выкидываем всё, кроме двух кнопок и поехали их кастомизировать.

А структура проекта в данном случае получится следующая:

  • QMLCutomButton.pro - Знакомый нам профайл проекта;
  • deployment.pri - файл для установки исходного кода на устройство;
  • main.cpp - давно знакомый стартовый файл приложения
  • qml.qrc - файл ресурсов проекта, там и складируются qml файлы
  • main.qml - файл qml главного окна приложения
  • MainForm.ui.qml - и опять ресурсный файл дизайнера, да простят меня хардкорщики. В нём и будут прятаться кнопки. Проект создавался под минимальную версию Qt 5.5.
30 июля 2015 г. 21:06

Android

Android, read, write, file

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

Структура проекта

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

Вся структура проекта соответственно состоит на этот раз лишь из одного класса: MainActivity

Также в проекте присутствуют следующие файлы ресурсов:

  1. activity_main.xml
  2. strings.xml
  3. styles.xml - в данном файле отсутствуют какие-либо изменения относящиеся к проекту.
26 июля 2015 г. 10:12

Android

Android, Toast

Даешь кастомизацию всего приложения под ОС Android!!!

С таким лозунгом хочется поведать сегодня о кастомизации всплывающего сообщения (Toast) в ОС Android. В любом приложении, которое проектируется и разрабатывается с особой тщательностью, может встать вопрос о кастомизации даже такого элемента, как всплывающее сообщение. Ведь успех приложений зависит не только от идеи и полезности, но также и от реализации внешнего вида деталей, даже самых мелких и, казалось бы, не особо важных. Что уж говорить про приложения с вырвиглазным дизайном.

Структура проекта

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

В Проекте присутствует два класса:

  1. MainActivity
  2. MyListAdapter - который отвечает за передачу данных в форму элемента списка

Также в проекте присутствуют следующие файлы ресурсов:

  1. activity_main.xml
  2. toast_info.xml - разметка всплывающего сообщения
  3. toast_border:xml - дополнительная разметка для background`а всплывающего сообщения
  4. ic_info.png -изображение информационного значка, который будет применяться во всплывающем сообщении
  5. string.xml - файл строковых констант
21 июля 2015 г. 9:55

Android

ListView, ListAdapter, Android

Кастомизация ListView является обычным явлением при разработке Приложения под ОС Android. ListView (Список) позволяет отображать однотипную информацию в Вашем Приложении, например показывать товары с ценами и характеристиками, если вы разрабатываете Приложение для онлайн продаж. При этом являясь по сути рутинной операцией, тем не менее, некоторые вопросы доставляют начинающим разработчикам массу неудобств. Некоторые из этих неудобств и вопросов будут разобраны в данной статье.

Структура проекта

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

Всего для создания списка используется четыре страны: Россия, Южная Африка, Сингапур, Турция. Флаги этих стран находятся в папке drawable. Также присутствует xml файл для создания бэкграунда ListViewи флагов. Для хранения названий и аббревиатур используется файл strings.xml. Также используется отдельный xml файл для создания разметки элемента ListView.

В Проекте присутствует три класса:

  1. MainActivity
  2. MyListAdapter - который отвечает за передачу данных в форму элемента списка
  3. DataFlags - класс, который призван облегчить передачу данных в Адаптер ListView
Donate

Здравствуйте, уважаемые пользователи EVILEG !!!

Если сайт вам помог, то поддержите разработку сайта финансово, пожалуйста.

Вы можете сделать это следующими способами:

Спасибо, Евгений Легоцкой

AS
13 декабря 2019 г. 6:05
Aruzhan Seraliyeva

C++ - Тест 003. Условия и циклы

  • Результат:50баллов,
  • Очки рейтинга-4
AS
13 декабря 2019 г. 5:47
Aruzhan Seraliyeva

C++ - Тест 001. Первая программа и типы данных

  • Результат:40баллов,
  • Очки рейтинга-8
Т
11 декабря 2019 г. 16:56
Тома

C++ - Тест 003. Условия и циклы

  • Результат:50баллов,
  • Очки рейтинга-4
Последние комментарии
9 декабря 2019 г. 3:41
Евгений Легоцкой

Эта ошибка invalid use of incomplete type ‘class Ui::AnotherWindow’ обычно говорит о том, что не найдено определение класса или структуры. Типичная проблема - не подключён заголовочны…
НБ
9 декабря 2019 г. 3:36
Николай Батманов

Ну, не настолько со мной всё полхо...))) Вроде бы. Я ж кнопки отрисовываю.
9 декабря 2019 г. 3:14
Евгений Легоцкой

Добрый день. У вас ui файлов по ходу нет. UI файлы используются для вёрстки в графическом дизайнере.
НБ
9 декабря 2019 г. 3:05
Николай Батманов

Здравствуйте! Полностью скопировал ваш пример к себе, чтобы разобраться. А он не хочет запускаться, дает ошибку: invalid use of incomplete type ‘class Ui::AnotherWindow’ ui(new Ui…
8 декабря 2019 г. 7:23
Евгений Легоцкой

У меня здесь есть одна старая статья с примером векторного редактора. Там есть ответы на ваши вопросы. Поизучайте Qt/C++ - Урок 072. Пример векторного редактора на Qt QGraphicsItem, QG…
Сейчас обсуждают на форуме
13 декабря 2019 г. 10:16
Руслан Волшебник

Да, я посмотрел, вы абсолютно правы. Единственное, если я правильно понял, если срабатывает условие if (aggregates["max_id"] - aggregates["min_id"]) + 1 == aggregates["count"]: return sel…
t
13 декабря 2019 г. 9:53
tantrido

Ответ >>
13 декабря 2019 г. 8:39
Александр Панюшкин

Вроде да. Только там начинаются вопросы с тем, чтобы виджет бы в фокусе, чтобы до виджета это событие долетало.
ДК
13 декабря 2019 г. 7:48
Джон Кофи

Привет. Есть класс "ждун", который используется на разных виджетах: class WaiterDialog;#define WAITER_DIALOG Singleton<WaiterDialog>::instance()class WaiterDialog : public QObject, …
EVILEG
О нас
Услуги
© EVILEG 2015-2019
Рекомендует хостинг TIMEWEB