Этот код завершается с ошибкой во втором Q_ASSERT.
class A : public QObject
{
Q_OBJECT
public:
void function(QObject *receiveOb, const char *slot)
{
Q_ASSERT((bool)connect(this, SIGNAL(mySignal(int)), receiveOb, SLOT(mySlot(int))));
Q_ASSERT(receiveOb->metaObject()->indexOfMethod(slot) != -1);
}
signals:
void mySignal(int param);
};
class MainClass : public QObject
{
Q_OBJECT
A a;
public slots:
void mySlot(int param)
{
param++;
}
public:
MainClass(QObject *papi = Q_NULLPTR) : QObject(papi)
{ }
void doIt()
{
a.function(this, SLOT(mySlot(int)));
}
};
Как я вижу, если connect может искать метод слота, я мог бы сделать то же самое.
Что я делаюнеправильно?Какие еще проверки я могу сделать, чтобы узнать свою ошибку?