Spec-Zone.ru › Qt 5.11

Класс QSignalSpy

Класс QSignalSpy позволяет просматривать эмиссию сигналов. Подробнее...

Заголовок: #include <QSignalSpy>
qmake: QT += testlib
Наследуется от: QObject и QList
  • Список всех членов, включая унаследованные

Открытые функции

QSignalSpy(const QObject *object, const char *signal)
QSignalSpy(const QObject *object, PointerToMemberFunction signal)
bool isValid() const
QByteArray signal() const
bool wait(int timeout = 5000)
  • 34 открытые функции, унаследованные от QObject
  • 78 открытых функций, унаследованных от QList

Дополнительные унаследованные члены

  • 1 свойство, унаследованное от QObject
  • 1 открытый слот, унаследованный от QObject
  • 2 сигнала, унаследованные от QObject
  • 1 открытая переменная, унаследованная от QObject
  • 10 статических открытых членов, унаследованных от QObject
  • 3 статических открытых члена, унаследованных от QList
  • 9 защищенных функций, унаследованных от QObject
  • 2 защищенных переменных, унаследованных от QObject

Подробное описание

Класс QSignalSpy позволяет просматривать эмиссию сигналов.

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

Следующий пример записывает все эмиссии сигнала clicked() для QCheckBox:

QCheckBox *box = ...;
QSignalSpy spy(box, SIGNAL(clicked(bool)));

// do something that triggers the signal
box->animateClick();

QCOMPARE(spy.count(), 1); // make sure the signal was emitted exactly one time
QList<QVariant> arguments = spy.takeFirst(); // take the first signal

QVERIFY(arguments.at(0).toBool() == true); // verify the first argument

spy.takeFirst() возвращает аргументы для первого посланного сигнала в виде списка объектов QVariant. Сигнал clicked() имеет один аргумент типа bool, который хранится как первый элемент в списке аргументов.

Пример ниже перехватывает сигнал от пользовательского объекта:

QSignalSpy spy(myCustomObject, SIGNAL(mySignal(int,QString,double)));

myCustomObject->doSomething(); // trigger emission of the signal

QList<QVariant> arguments = spy.takeFirst();
QVERIFY(arguments.at(0).type() == QVariant::Int);
QVERIFY(arguments.at(1).type() == QVariant::String);
QVERIFY(arguments.at(2).type() == QVariant::double);

Примечание: Нестандартные типы данных необходимо зарегистрировать, используя функцию qRegisterMetaType(), прежде чем создавать QSignalSpy. Например:

qRegisterMetaType<SomeStruct>();
QSignalSpy spy(&model, SIGNAL(whatever(SomeStruct)));

Для получения экземпляра можно использовать qvariant_cast:

// get the first argument from the first received signal:
SomeStruct result = qvariant_cast<SomeStruct>(spy.at(0).at(0));

Документация по функциям-членам

QSignalSpy::QSignalSpy(const QObject *object, const char *signal)

Создаёт новый объект QSignalSpy, который прослушивает эмиссию сигнала signal от объекта QObject object. Если QSignalSpy не может прослушивать действительный сигнал (например, потому что object равен null или signal не обозначает действительного сигнала object), будет выведено сообщение об ошибке с помощью qWarning(), и последующие вызовы isValid() вернут false.

Пример:

QSignalSpy spy(myPushButton, SIGNAL(clicked(bool)));

QSignalSpy::QSignalSpy(const QObject *object, PointerToMemberFunction signal)

Создаёт новый объект QSignalSpy, который прослушивает эмиссию сигнала signal от объекта QObject object. Если QSignalSpy не может прослушивать действительный сигнал (например, потому что object равен null или signal не обозначает действительного сигнала object), будет выведено сообщение об ошибке с помощью qWarning(), и последующие вызовы isValid() вернут false.

Пример:

QSignalSpy spy(myPushButton, &QPushButton::clicked);

Функция была добавлена в Qt 5.4.

bool QSignalSpy::isValid() const

Возвращает true, если прослушиватель сигналов прослушивает действительный сигнал, иначе false.

QByteArray QSignalSpy::signal() const

Возвращает нормализованный сигнал, к которому прослушиватель подключен в данный момент.

bool QSignalSpy::wait(int timeout = 5000)

Запускает цикл обработки событий, который работает до тех пор, пока не будет получен указанный сигнал. При необходимости цикл обработки событий может завершиться досрочно по истечении timeout (в миллисекундах).

Возвращает true если сигнал был послан хотя бы один раз в течение timeout миллисекунд, иначе возвращает false.

Пример:

QVERIFY(spy.wait(1000));

Функция была добавлена в Qt 5.0.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qsignalspy.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API