LINUX.ORG.RU

История изменений

Исправление dhampire, (текущая версия) :

Сигналы не ходят _без_ eventloop, до строки return a.exec(); нету у тебя eventloop. Или крути руками или можно сделать примерно так:

QCatchTest.h

#pragma once

#include <QCoreApplication>
#include <QTimer>
#include <QObject>
class QCatchTest : public QCoreApplication
{
	Q_OBJECT
	int m_argc;
	char** m_argv;
public:
	QCatchTest(int &argc, char *argv[]) : QCoreApplication(argc, argv) {
		m_argc = argc;
		m_argv = argv;
	}

public Q_SLOTS:
	void startCatch();
};

QCatchTest.cpp

#define CATCH_CONFIG_RUNNER // own main
#include "catch.hpp"

#include "QCatchTest.h"

void QCatchTest::startCatch()
{
// а вот тут он уже есть. 
	int result = Catch::Session().run( m_argc, m_argv);
	qApp->exit(result);
}

int main( int argc, char *argv[])
{
	QCatchTest app(argc, argv);
	QTimer timer;
	timer.setSingleShot(true);
	QObject::connect(&timer, SIGNAL(timeout()), &app, SLOT(startCatch()));
	timer.start(100);
        // тут eventloop ещё не запущен.
	return app.exec();
}

Исходная версия dhampire, :

Сигналы не ходят _без_ eventloop, до строки return a.exec(); нету у тебя eventloop.