Реклама

Тег → QML

  • EVILEG
  • Статья
  • 5 июля 2017 г. 17:14

QML - Урок 030. Регистрация QML Типа в качестве Синглетон объекта

QML, singleton

Помимо C++ классов в QML в качестве Синглетона можно использовать и QML типы, которые представляют собой отдельные файлы QML.

Для этого также используется qmlRegisterSingletonType , но чтобы этот тип работал в качестве Singleton объекта, необходимо прописать в самом QML файле pragma Singleton.

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

  • EVILEG
  • Статья
  • 1 июля 2017 г. 16:03

QML - Урок 028. Регистрация пользовательских enum в QML

QML, enum, qmlRegisterType

Для того, чтобы использовать в QML перечисления enum, прописанные в C++, необходимо создать класс, наследованный от QObject, и зарегистрировать его в качестве QML Type перед запуском QML движка  в приложении.

Для изучения создайте проект с использованием QtQuick.

Минимальный вариант такого класса с перечислениям будет следующим:

#ifndef INFO_H
#define INFO_H

#include <QObject>

class Info : public QObject
{
    Q_OBJECT
public:
    enum State {
        Information,
        Debug,
        Warning,
        Error
    };
    Q_ENUM(State)
};

#endif // INFO_H
  • Troffe
  • Вопрос
  • 6 июня 2017 г. 17:01

Что выбрать?

Qt, QML, QWidget

Допустим я хочу реализовать подобный интерфейс что мне использовать QML или QWidget?

  • BlinCT
  • Вопрос
  • 6 апреля 2017 г. 14:43

Компановка обьектов внутри другого в QML

QML

Всем привет. Моя самая больная тема, это настройка QML обьектов) Задача такая, есть rectangle который должен принять высоту в зависимости от высоты детей которые вложены в него. Само собою внешний rectangle должен учитывать высоту уже внутреннего rectangle и кнопки что идет под ним.

Rectangle
{
            height: 140 * mm
            width: 130 * mm
            radius: 2 * mm
            x: (parent.width - width) / 2
            y: (parent.height - root.height) / 2

            color: "#FF4000"

            ColumnLayout
            {
                anchors.fill: parent
                anchors.margins: 2 * mm
                spacing: 2 * mm

                Rectangle
                {
                    id: rectangleMain
                    anchors.top: parent.top
                    anchors.left: parent.left
                    anchors.right: parent.right
                    color: "yellow"

                    Column
                    {
                        anchors.left: parent.left
                        anchors.right: parent.right
                        anchors.verticalCenter: parent.verticalCenter
                        spacing: 3 * mm

                        Rectangle
                        {
                            id: rectangle1
                            color: "#0174DF"

                            anchors.left: parent.left
                            anchors.right: parent.right
                            radius: 3 * mm
                            height: 20 * mm
                            Label
                            {
                                anchors.horizontalCenter: parent.horizontalCenter
                                text: _dialog.title
                                font.pixelSize: 5.1 * mm

                            }
                        }

                        Rectangle
                        {
                            id: rectangle2
                            color: "#0174DF"

                            anchors.left: parent.left
                            anchors.right: parent.right
                            radius: 3 * mm
                            height: 20 * mm

                            Label
                            {
                                anchors.left: parent.left
                                anchors.right: parent.right
                                anchors.fill: parent
                                text: _dialog.sender
                                textFormat: Text.StyledText
                                font.pixelSize: 4.7 * mm
                                wrapMode: Text.WordWrap
                                horizontalAlignment: Text.AlignHCenter

                            }
                        }

                        Rectangle
                        {
                            id: rectangle3
                            color: "#0174DF"

                            anchors.left: parent.left
                            anchors.right: parent.right
                            radius: 3 * mm
                            height: 20 * mm
                            Label
                            {
                                anchors.left: parent.left
                                anchors.right: parent.right
                                text: _dialog.name
                                textFormat: Text.StyledText
                                font.pixelSize: 4.7 * mm
                                wrapMode: Text.WordWrap
                                horizontalAlignment: Text.AlignHCenter

                            }
                        }

                        Rectangle
                        {
                            id: rectangle4
                            color: "#0174DF"

                            anchors.left: parent.left
                            anchors.right: parent.right
                            radius: 3 * mm
                            height: 30 * mm

                            Text
                            {
                                anchors.left: parent.left
                                anchors.right: parent.right
                                text: _dialog.description
                                textFormat: Text.StyledText
                                font.pixelSize: 4.4 * mm
                                width: _dialog.width
                                wrapMode: Text.WordWrap
                                horizontalAlignment: Text.AlignHCenter

                            }
                        }
                    }

                    Layout.fillHeight: true
                }

                RowLayout
                {
                    anchors.horizontalCenter: parent.horizontalCenter
                    spacing: 2 * mm
                    CButton {
                        text: "OK"
                        onClicked: {
                            _dialog.close()
                            _dialog.confirmed()
                        }
                        anchors.centerIn: parent
                        height: 20 * mm
                        width: 50 * mm
//                        Layout.fillWidth: true
                    }
                }
            }
        }
Заранее благодарю.
  • EVILEG
  • Статья
  • 3 апреля 2017 г. 0:22

PyQt5 - Урок 007. Работаем с QML QtQuick (Сигналы и слоты)

PyQt5, QML, QtQuick, Signal, Slot

А теперь более глубоко погрузимся в работу с Qt с помощью PyQt5, воспользовавшись современными возможностями Qt. Под такими возможностями я подразумеваю QtQuick и QML. PyQt5 позволяет использовать классы Qt, которые могут обрабатывать QML код, а следовательно, можно написать интерфейс на QML, а также передавать сигналы в QML слой и вызывать слоты объектов, наследованных от QObject из QML слоя.

Чтобы познакомиться с такими возможностями PyQt5, напишем программу, которая реализует следующие задачи:

  • Интерфейс программы должен быть написан на QML
  • Должен быть реализован класс, наследованный от QObject и написанный на python, с которым будем взаимодействовать из QML
  • Приложение с помощью данного класса должно будет складывать и вычитать целые числа

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

  • BlinCT
  • Вопрос
  • 2 марта 2017 г. 19:45

Обращение в QML к стринговым данным или ENUM

C++, QML

Всем привет. Такой вопрос возник, есть куча стрингов, примерно такого типа

const QString Message095_Data::m_strTherapyType = "therapy_type";
const QString Message095_Data::m_strTherapyStep = "therapy_step";
const QString Message095_Data::m_strResults = "results";
const QString Message095_Data::m_strRecordedData = "recorded_data";
const QString Message095_Data::m_strExaminationType = "examination_type";
const QString Message095_Data::m_strSourceFilePath = "source_file_path";
const QString Message095_Data::m_strData = "data";
И таких данных(в моем случаи ключи) много. Удобство в том что в QML к ним можно обратится по точке, типа blabla.results и мы обращаемся к данным. Но, минус в том что если я где то пишу код то сделать ошибку даже в одной букве легко, и найти потом не просто. Мысль такая что как то все стринги обернуть в enum и если я буду обращаться то class_enum::results то это уже удобно но как потом к ним обращаться в QML? Буду признателен за совет или пример какой нибудь просто.
  • Rus6lan
  • Вопрос
  • 7 февраля 2017 г. 2:06

Управление QML объектами в JavaScript

QML, JavaScript

У меня есть JS файл, в котором я отправляю запросы, как мне в этой же функции управлять QML компонентами в main.qml или другом QML файле.

.pragma library
function login(username, password) {        
        var params = 'username=' + encodeURIComponent(username) +
        '&password=' + encodeURIComponent(password);
        var request = new XMLHttpRequest()
        request.open('POST', 'http://auth-test.app-labs.ru/api/login')
        request.onreadystatechange = function() {
            if (request.readyState === XMLHttpRequest.DONE) {
                console.log("Status", request.status)
                if (request.status && request.status === 200) {
                    console.log("response", request.responseText)                    
                } else {
                    console.log("HTTP:", request.status, request.statusText)
                }
            }
        }
        request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
        request.send(params)    
}
  • EVILEG
  • Статья
  • 3 февраля 2017 г. 22:55

QML - Урок 027. Добавляем QML в проект на QWidget

QQuickWidget, QML, C++, QWidget

При разработке приложения на Qt может случиться такая ситуация, когда потребуется в приложение, написанное на QWidgets внедрить функционал, написанный на QML. Для решения подобной задачи может использоваться класс QQuickWidget , который служит для рендеринга QML.

Напишем простейший hello world, который позволит отрисовать код, написанный на QML в виджете, который помещён в окно, основанное на QWidget. Чтобы оно выглядело следующим образом:

  • BlinCT
  • Вопрос
  • 28 января 2017 г. 18:16

Подстановка контента в TabBar QML из других qml файлов

QML, TabBar, TabButton

Всем привет. Вопрос в работе TabBar, TabButton и контента из внешнего qml файла Имеется main.qml в котором мы создаем

 header: TabBar
    {
        id: tabBar
        TabButton
        {
            text: qsTr("Test1")
        }
        TabButton
        {
            text: qsTr("Test2")
        }
        TabButton
        {
            text: qsTr("Test3")
        }
    } //tabbar
Мы имеем нормальный набор вкладок. И вот теперь нужно в каждую вкладку запихнуть готовый контент из другого файла. Наткнулся на SwipeView но это вроде как не то что надо, выглядит как будто он выстроил их по порядку. А нужно получить именно в первой вкладке один контент, в другой вкладке другой и так далее. Такое разделение связано с тем что контент каждой вкладки не должен никак контактировать с другими. Буду признателен за помощь и советы. Или может другие варианты.
  • EVILEG
  • Статья
  • 25 января 2017 г. 21:07

Qt 5.8 released

Qt Lite, Qt 5.8, QML, Charts, Wayland, CAN, Modbus, Quick

23-го января Qt Company анонсировала выпуск Qt 5.8, с рядом нововведений, которые носят достаточно глобальный характер. Давайте ознакомимся с ними.

Qt Lite

Одной из главных тематик Qt 5.8 стало сделать так, чтобы Qt был более гибким и лёгким к адаптации к целям пользователей, в частности для разработчиков встраиваемых систем. Qt Lite является кодовым именем проекта, целью которого является внедрение данных целей.

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

Внедряемая система является длинным путешествием, где была переписана значительная часть системы, которая отвечает за конфигурирование Qt. Эта новая система очищена от того, что наросло за последние 15 лет, и это также может привести к несоответствиям с тем, как Qt был сконфигурирован на различных платформах.

Как результат, получена одна унифицированная система для настройки различных частей Qt. В дополнение пользователям даётся более гибкая в настройке библиотека Qt. И также призвана облегчить бремя разработчиков Qt Company в поддержке всех различных способов настройки и использования Qt.

Реклама
  • BoostEX
  • 17 августа 2017 г. 16:45

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

  • Результат - 73 баллов
  • Nordman
  • 15 августа 2017 г. 20:40

C++ - Тест 005. Структуры и Классы

  • Результат - 66 баллов

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

  • Результат - 33 баллов
Последние комментарии
  • EVILEG
  • 17 августа 2017 г. 18:33

Qt/C++ - Урок 069. Шифрование методом XOR

Не обратил внимания на это, Проверял с большим текстом.. По идее не должно.

Qt/C++ - Урок 069. Шифрование методом XOR

Шифрует/дешифрует текст от 8 символов, так и должно быть?

  • EVILEG
  • 15 августа 2017 г. 20:32

Qt/C++ - Урок 048. QThread - работа с потоками с помощью moveToThread

Нууу... тут уже вопрос к самому Qt4.8. Если честно, идей нет, да и копаться в deprecated коде желания тоже нет.

  • t000r
  • 15 августа 2017 г. 19:49

Qt/C++ - Урок 048. QThread - работа с потоками с помощью moveToThread

В qt5.6 всё нормально заработало. С 4.8 - нет

  • EVILEG
  • 15 августа 2017 г. 17:44

Qt/C++ - Урок 050. Логирование событий Qt приложения в текстовый файл

Я полистал информацию в интернетах, вроде как кто-то пытается подружить его с Qt5, но успешных результатов не нашёл. Да и на сайте как-то не заметно информации о том, что конкретно ему нужно, ...

Сейчас обсуждают на форуме

Сборка Qt / C++ проекта под windows и linux

вы имели ввиду это? если да, то как то не работает((( #include <iostream>#include <bitset> // заголовочный файл битовых полей#include <iomanip> // для манип...

  • alex_lip
  • 17 августа 2017 г. 19:11

Я только учусь..(как правильно присвоить значение объекту другого класса)

А что вы думаете про директиву friend ? class A { friend void B::changeValue(); private: int _value;};class B { void changeValue() { a-&...

  • EVILEG
  • 16 августа 2017 г. 13:38

Перевод кодировки строки из windows 1251 в Utf-8

Здесь необходимо использовать QTextCodec. Вещь это очень хитрая в том плане, что объект этого класса необходимо создавать с определённой кодировкой. Поскольку он будет гонять данные от заданной код...

  • EVILEG
  • 15 августа 2017 г. 17:09

Переключение между Qt::WindowMaximized и Qt::WindowNoState при фиксированном размере окна.

Согласен - это велосипед, но это гораздо меньше, чем отключить оформление окна и написать своё оформление )) Например, как здесь .

  • EVILEG
  • 13 августа 2017 г. 13:51

SQLITE speed up

Заполняете в цикле из объекта query? Можете показать тот кусок кода, где выполняете эти манипуляции? Ускорить код разве только некоторым манипуляциями с указателями или ссылками, н...