Мониторинг/Вывод излучаемых Qt-сигналов
-
21-12-2019 - |
Вопрос
Я определил некоторые сигналы, которые излучаются в разных случаях:
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
где-то?
Решение
Эта идея пришла мне в голову, когда я читал больше о моке и его функциональности.(По крайней мере, при использовании 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;
и, кажется, он делает именно то, что я хочу.
Другие советы
Как написано в связанной документации:
Запускает тестовую функцию toUpper со всеми доступными тестовыми данными и тестовую функцию toInt с тестовыми данными, называемыми нулевыми (если указанные тестовые данные не существуют, связанный тест завершится неудачей).
/myTestDirectory$ testMyWidget -vs -eventdelay 500
где testMyWidget — созданный тестовый двоичный файл.Здесь идет -vs
документация:
-vs выводит каждый сигнал, который излучается
Существует также дополнительная документация, если вы просмотрите вывод справки:
/myTestDirectory$ testMyWidget --help | grep "\-vs"
-vs outputs every signal that gets emitted
Если у вас возникли проблемы с письмом QTestLib
основанные на модульных тестах, это хорошая отправная точка для вас с Qt 4: