Подключите слоты из другого класса, не работающего в Qt

У меня есть этот класс в button.h:

class Buttons : public QObject
{
    Q_OBJECT
public:
    Buttons();
    QVector<QPushButton*> buttons;
public slots:
    void getBtnInfo();
};

И в mainwindow.cppПодключаю вот так:

Buttons mButtons;
for(int i = 0; i < mButtons.buttons.size(); i++) {
    mButtons.buttons[i] = new QPushButton(mCentralWidget);
    ...
    connect(mButtons.buttons[i], SIGNAL(clicked(bool)), &mButtons, SLOT(getBtnInfo()));
}

Работает без ошибок; но getBtnInfo() slot Кажется, ничего не делать. Потому что я пытался просто просто отладить в этом слоте, не работает.

Но если я объявлю getBtnInfo() slot в mainwindow.h и подключите вот так:

connect(mButtons.buttons[i], SIGNAL(clicked(bool)), this, SLOT(getBtnInfo()));

тогда это работает.
Интересно, почему? И как мне решить проблему выше?
Благодарю.

1 ответ

Решение

Если переменная создается в функции, она существует только в этой функции, тогда она не будет доступна, и это то, что, я думаю, происходит, я рекомендую вам сделать mButtons членом класса.

*.час

private:
    Buttons mButtons;
Другие вопросы по тегам