连接另一个不在Qt

时间:2017-11-18 14:26:01

标签: c++ qt qt5 qt-signals qt-slot

我在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 个答案:

答案 0 :(得分:2)

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

<强> *的.h

private:
    Buttons mButtons;