QMetaObject :: indexOfMethod () не может найти слот - PullRequest
0 голосов
/ 28 декабря 2018

Этот код завершается с ошибкой во втором 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 может искать метод слота, я мог бы сделать то же самое.

Что я делаюнеправильно?Какие еще проверки я могу сделать, чтобы узнать свою ошибку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...