Добавил:
Только когда поступишь в технический вуз поймешь на сколько ты гуманитарий Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дополнительные материалы.pdf
Скачиваний:
3
Добавлен:
07.06.2025
Размер:
12.29 Mб
Скачать

РАЗРАБОТКА НА QT ДЛЯ МОБИЛЬНЫХ УСТРОЙСТВ

РЕГИСТРАЦИЯ КЛАССА ДЛЯ QML

Регистрация типа в C++

#include <QtQuick> #include "ClassName.h"

int main(int argc, char *argv[])

{

qmlRegisterType<ClassName>("module.name", 1, 0, "TypeName");

Использование зарегистрированного типа в QML

import module.name 1.0

TypeName { … }

doc.qt.io/qt-5/qqmlengine.html#qmlRegisterType

РАЗРАБОТКА НА QT ДЛЯ МОБИЛЬНЫХ УСТРОЙСТВ

СИГНАЛЫ И СЛОТЫ

Сигналы

»Испускаются объектом при изменении его состояния

»Публичные методы, доступны отовсюду (рекомендуется испускать только владельцем)

»Не возвращают значений

»Могут принимать аргументы

»Реализация генерируется с помощью moc

Слоты

»Методы, к которым можно подключать сигналы

»Не должны возвращать значение

»Могут быть приватными и публичными

»Могут быть вызваны как обычные методы

»Вызываются при испускании присоединённых сигналов (даже приватные)

Объект 1

Сигнал 1 Сигнал 2

Объект 3

Сигнал 1

Слот 1

Объект 2

Сигнал 1

Слот 1 Слот 2

Объект 4

Слот 1 Слот 2 Слот 3

doc.qt.io/qt-5/signalsandslots.html

РАЗРАБОТКА НА QT ДЛЯ МОБИЛЬНЫХ УСТРОЙСТВ

ПОДКЛЮЧЕНИЕ И ИСПУСКАНИЕ СИГНАЛОВ

Подключение

»Синтаксис (есть вариации)

QObject::connect(senderObject, &ClassName::signalName,

receiverObject, &ClassName::signalOrSlotName, Qt::ConnectionType type = Qt::AutoConnection);

»Пример

QObject::connect(this, &TextProcessor::textChanged,

this, &TextProcessor::processedTextChanged);

Отключение

»Синтаксис (есть вариации)

QObject::disconnect(senderObject, &ClassName::signalName,

receiverObject, &ClassName::signalOrSlotName);

Испускание

»Синтаксис

emit signalName( … );

»Пример

emit textChanged();

doc.qt.io/qt-5/qobject.html#connect

РАЗРАБОТКА НА QT ДЛЯ МОБИЛЬНЫХ УСТРОЙСТВ

РЕГИСТРАЦИЯ СВОЙСТВ

Синтаксис

Q_PROPERTY(

type propertyName READ getterName [WRITE setterName]

[NOTIFY changeSignalName]/[CONSTANT]

)

Примеры

Q_PROPERTY(QString

text

READ

text

WRITE

setText

NOTIFY

textChanged)

Q_PROPERTY(QString

processedText

READ

processedText

NOTIFY

processedTextChanged)

doc.qt.io/qt-5/qobject.html#Q_PROPERTY