У меня есть этот класс в 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()));
тогда это работает.
Интересно, почему? И как мне решить проблему выше?
Благодарю.
Если переменная создается в функции, она существует только в этой функции, тогда она не будет доступна, и это то, что, я думаю, происходит, я рекомендую вам сделать mButtons членом класса.
*.час
private:
Buttons mButtons;
Других решений пока нет …