0

我有这门课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() slotmainwindow.h连接:

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

然后它工作。
我想知道为什么?以及如何解决上述问题?
谢谢。

4

1 回答 1

2

如果在函数中创建了一个变量,它只存在于该函数中,那么它将无法访问,这就是我认为正在发生的事情,我建议您将 mButtons 设为该类的成员。

*。H

private:
    Buttons mButtons;
于 2017-11-18T15:12:15.413 回答