我在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()));
然后它起作用。
我想知道为什么?我如何解决上述问题?
感谢。
答案 0 :(得分:2)
如果在函数中创建了一个变量,它只存在于该函数中,那么它将无法访问,这就是我认为正在发生的事情,我建议你让mButton成为该类的成员。
<强> *的.h 强>
private:
Buttons mButtons;