© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
6 марта 2018 г. 7:17

AndroidAndroid. Java vs Qt QML - Урок 005. Создаём контекстное меню

Qt, Menu, JAVA, Android, QML

После того, как мы разобрались с тем, как создать меню в Action Bar, добавим контекстное меню к каким-нибудь объектам.

В данном уроке добавим два текстовых поля, которые будут иметь контекстное меню.

  • Контекстное меню первого текстового поля будет изменять цвет и размер текста в первом текстовом поле
  • Контекстное меню второго текстового поля будет просто изменять текст во втором текстовом поле.

Первое контекстное меню будет иметь два подменю, первое будет отвечать за изменение цвета, а второе будет отвечать за изменение размера.

ActionBar в Java активити отключим, чтобы он не мешался.

2 марта 2018 г. 7:53

AndroidAndroid. Java vs Qt QML - Урок 004. Создание меню в Action Bar с подменю

Qt, JAVA, Android, QML

Итак, продолжаем реализовывать одинаковый функционал в приложениях под Android из двух принципиально различных миров. А именно на традиционной Java и менее распространённом Qt QML C++.

На этот раз реализуем меню в ActionBar активити. Отмечу, что ActionBar для варианта с QML придётся писать самостоятельно, поскольку такого элемента в Qt QML нет, но он реализуется через компонент ToolBar. Поскольку этот момент был описан в уроке про Hello World , то в данном уроке тщательно останавливаться на нём не будем, только вынесем ActionBar в отдельный QML файл, сделав его отдельным типом QML и добавим в него иконку меню, по нажатию на которую будем вызывать меню.

Меню будет следующую структуру:

  • Information
    • First
    • Second
  • About

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

  • First
  • Second
  • About
1 марта 2018 г. 7:58

AndroidAndroid. Java vs Qt QML - Урок 003. Сообщения в консоли и всплывающие сообщения Toast

Android, Toast, QML, log, Qt, JAVA, console

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

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

Вывод в консоль

В случае с Java для этого служит класс Log, а в случае с QML для этого служит функционал console, который хорошо знаком Web-программистам.

Сообщения консоли имеют различные уровни важности:

  • ERROR
  • WARN
  • NFO
  • DEBUG
  • VERBOSE
27 февраля 2018 г. 7:40

AndroidAndroid. Java vs Qt QML - Урок 002. Обработка нажатий по кнопкам

Qt, Android, JAVA, button, QML

После того, как мы познакомились с Hello World из мира Java и Qt QML под Android, предлагаю написать приложение, которое будет иметь две кнопки и по нажатию на эти кнопки будет изменять текст в небольшом текстовом поле. Приложения должны выглядеть одинаково, но не на 100 процентов идентично. При желании этого можно добиться, но в данном примере не обязательно.

В обоих случаях будет использоваться Material Design .

Прежде, чем посмотреть на программный код, посмотрим на внешний вид обоих приложений.

Приложение, которое написано на Java

19 февраля 2018 г. 7:13

AndroidAndroid. Java vs Qt QML - Урок 001. Hello World

Qt, JAVA, Android, QML

Любопытства ради решил сравнить два варианта написания приложений под Андроид. Когда-то давно начинал заниматься программированием под Андроид на Java, но со временем перешёл на разработку Desktop приложений на Qt QML. Но теперь вновь решил освежить в памяти некоторые аспекты, чтобы убедиться, что Qt QML мне нравится больше.

Сразу приведу результат двух Hello world`ов. Они конечно не будут на 100 процентов идентичны, но должны быть похожи. В качестве базового примера возьму пустую Activity, которая создаётся в Android Studio.

Первый образец - это Hello World на Java

16 июня 2017 г. 11:45
GUVadim

QImage не может определить тип изображения сделаного средствами JAVA

Собственно изображение (снимок на WEB-камеру через браузер средствами JAVA JCrop), который не может определить QImage.
Задумка была вставлять обрезанное изображение с оттенками серого в QLabel, но дальше обрезки дело не идёт.
На выходе QImage::format() полчую - 0 что говорит о неверном формате.
В обычных просмоторщиках изображений всё отлично и корректно.
В чём может быть загвоздка?
Сам код:

QImage img(importDataPath);
        qDebug() << "img.format() Foto" << img.format();
            // Грузим заново исправленный файл в QImage
            img.load(importDataPath);
        }
        // Скалируем размер
        img = img.scaled(736,160,Qt::IgnoreAspectRatio);
        // Делаем фото с оттенками серого, если оно не уже таковое
        if(img.format()!=24)
        img = img.convertToFormat(QImage::Format_Grayscale8);
        //сохраняем отскейленый файл
        if(img.save(importDataPath)){
            qDebug() << "save scaled SIGN "+importDataPath;
        }else{
            qDebug() << "NOT save scaled SIGN "+importDataPath;
            return;
        }

        QFile* file = new QFile(importDataPath);
        if(file->open(QIODevice::ReadOnly)){
            QByteArray  ba = file->readAll();
            base64sign = QString(ba.toBase64());
            QImage scaledImg;
            scaledImg.loadFromData(QByteArray::fromBase64(ba.toBase64()));
            signLb->setPixmap(QPixmap::fromImage(scaledImg));
            file->close();
        }else{
            qDebug() << "file is not opened SIGN (convert)";
        }
    }


Проблему решить можно через непосредственное открытие файла и изменение его типа...
Заранее спасибо за ответы.

21 мая 2018 г. 8:30
Nasty

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат 10 баллов
  • Очки рейтинга -10
20 мая 2018 г. 12:26
Venic

C++ - Тест 002. Константы

  • Результат 58 баллов
  • Очки рейтинга -2
20 мая 2018 г. 12:16
Venic

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат 90 баллов
  • Очки рейтинга 8
Последние комментарии
19 мая 2018 г. 12:44
EVILEG

Django - Snippet 001. get_object_or_none

А вы гарантируете, что метод first вернёт нужный объект, если в таблице две похожих записи? Этого никто не гарантирует. Может возникнуть неопределённое поведение приложения, если запись не так...
19 мая 2018 г. 12:34
Pavel

Django - Snippet 001. get_object_or_none

Согласен с тем что ваше решение более очевидно при чтении кода. first() же здесь применяется не совсем по назначению. А с последствиями "моего" решения не согласен. Метод вернёт только один об...
19 мая 2018 г. 12:27
EVILEG

Как я использовал FilterView заместо ListView для упрощения фильтрации

Может быть, а может и нет, все имеют различную речь.. не могу отвечать за всех пользователей ресурса.. поскольку каждый пользователь может дополнить материал ресурса статьями.
19 мая 2018 г. 12:25
EVILEG

Django - Snippet 001. get_object_or_none

В вашем случае происходит подмена сущностей. Вместо того, чтобы взять один конкретный объект, вы забираете queryset а потом берёте из него первый объект. Нехорошо будет, если queryset в каком-...
19 мая 2018 г. 11:11
Pavel

Django - Snippet 001. get_object_or_none

Тоже искал подобную функцию, чтобы не обрабатывать каждый раз исключения. И нашёл на so совет использовать вместо неё метод менеджера first(), который возвращает None при пустом queryset. Т.е ...
Сейчас обсуждают на форуме
21 мая 2018 г. 16:18
otvertka

Выводит мусор

Да, мыши. Т.е. мне надо создать класс-потомок от QPushButton, и там переопределить метод mousePressEvent? И как тогда у  Buttons поменять класс на созданный?
20 мая 2018 г. 2:05
vitaliy_antipov

Удаление серии из графика

Ой, извините, совсем запарился. Туплю: void MainWindow::onDelSeries(int i){ chartview->chart()->findChild<QLineSeries *>("obj" + QString::number(i))->deleteLater();...
18 мая 2018 г. 8:55
mak_trefa

Сборщик мусора и Connections в qml

можешь попробовать в деструкторе модели вызвать throw; и в дебагере посмотреть stacktrace
17 мая 2018 г. 20:30
EVILEG

Нарисовать дугу в QGraphicsItem

Добрый день! Оу, я смотрю по гитхабу, что вы уже разобрались с проблемой. Извиняюсь, заработался и забыл про ваш вопрос.
17 мая 2018 г. 15:34
Евгений_Канусовский@1981

Проблема с combobox

Спасибо за очередную помощь!

Рекомендуемые страницы