我在 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() 插槽
似乎什么也没做。因为我试过只是在这个插槽中调试,没有工作。
但是如果我在 mainwindow.h
中声明 getBtnInfo() slot
并像这样连接:
connect(mButtons.buttons[i], SIGNAL(clicked(bool)), this, SLOT(getBtnInfo()));
然后就可以了。
我想知道为什么?以及如何解决上述问题?
谢谢。
最佳答案
如果一个变量是在一个函数中创建的,它只存在于该函数中,那么它将不可访问,这就是我认为正在发生的情况,我建议您使 mButtons 成为该类的成员。
*.h
private:
Buttons mButtons;
关于c++ - 连接来自另一个在 Qt 中不起作用的类的插槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47367129/