Монитор / вывод излучаемых Qt-сигналов

Я определил некоторые сигналы, которые испускаются в разных случаях:

signals:
void buttonXClicked(int x);
void numButtonsChanged(int num);

Теперь я просто хотел бы посмотреть, как выглядят эти сигналы и правильны ли параметры. Кажется, есть несколько подходов для мониторинга сигналов.

в сообщение здесь rohanpm относится к параметру -vs который указан здесь ближе:
http://qt-project.org/doc/qt-4.8/qtestlib-manual.html#qtestlib-command-line-arguments

Похоже, это элегантный и быстрый способ получения необходимой мне информации.
Но, честно говоря, я не могу понять, как и куда мне бежать -vs, Это не часть qmake, Где еще я должен положить это? (Я довольно новичок в Qt).

Связанный с QSignalSpy Кажется, необходимо изменить существующие классы? Разве нет «внешнего» подхода?

Существует множество документов о том, как протестировать слот, но связанных с сигналами? Могу ли я использовать printf или же cout где-то?

1

Решение

Я получил эту идею, читая больше о МОК и его функциональности. (По крайней мере, при использовании NetBeans) я получаю дополнительный к моему файлу ButtonTest.cpp файл moc_ButtonTest.cpp. Внутри есть метод, который называется:

// SIGNAL 0
void ButtonTest::buttonXClicked(int _t1)
{
void *_a[] = { 0, const_cast<void*>(reinterpret_cast<const void*>(&_t1)) };
QMetaObject::activate(this, &staticMetaObject, 0, _a);
}

Я едва мог поверить, что это было так легко, но я только что добавил

std::cout <<"buttonXClicked: "<<_t1;

и, кажется, делает именно то, что я хочу.

1

Другие решения

Как написано в связанной документации:

Запускает тестовую функцию toUpper со всеми доступными тестовыми данными и тестовую функцию toInt с тестовыми данными, называемыми нулем (если указанные тестовые данные не существуют, связанный тест не пройден).

/myTestDirectory$ testMyWidget -vs -eventdelay 500

где testMyWidget — это встроенный тестовый бинарный файл. Здесь идет -vs документация:

-против
выводит каждый сигнал, который излучается

Есть также еще немного документации, если вы запустите вывод справки:

/myTestDirectory$ testMyWidget --help | grep "\-vs"-vs outputs every signal that gets emitted

Если у вас возникли проблемы с написанием QTestLib основанные на модульных тестах, это хорошая отправная точка для вас с Qt 4:

Руководство по QTestLib

0

По вопросам рекламы [email protected]