このように書くと、イベントループがなくても「Test」メッセージが出力されるようですので、これが手掛かりになるかもしれません:
#include <QObject>
#include <QCoreApplication>
#include <QDebug>
class MyClass : public QObject
{
Q_OBJECT
public:
explicit MyClass(QObject *parent) : QObject(parent) {}
void testMethod() { emit testSignal(); }
signals:
void testSignal();
public slots:
void testSlot() { qDebug() << "Test"; }
};
#include "main.moc"
int main(int argc, char **argv)
{
// QCoreApplication coreApplication(argc, argv);
MyClass myObject(0);
QObject::connect(&myObject, SIGNAL(testSignal()), &myObject, SLOT(testSlot()));
myObject.testMethod();
// return coreApplication.exec();
return 0;
}
この方法でも Qt は必要ですが、「ブロッキング」イベント ループを避けることができます。ただし、送信されたシグナルに対して実行する必要がある直接呼び出しの数に応じて、コードをシグナルスロットレイヤーから直接呼び出しに再配置する方が簡単な場合があります。