连接来自另一个 class 的插槽在 Qt 中不起作用

Connect slots from another class not working in Qt

我在 button.h 中有这个 class:

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 似乎什么也没做。因为我试过只是在这个插槽中调试,没有工作。

但是,如果我在 mainwindow.h 中声明 getBtnInfo() slot 并像这样连接:

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

然后就可以了。
我想知道为什么?以及如何解决上述问题?
谢谢。

如果一个变量是在一个函数中创建的,它只存在于那个函数中,那么它将不可访问,这就是我认为正在发生的事情,我建议你让 mButtons 成为 class.

*.h

private:
    Buttons mButtons;