Подключите слоты из другого класса, не работающего в Qt

У меня есть этот класс в 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

Решение

Если переменная создается в функции, она существует только в этой функции, тогда она не будет доступна, и это то, что, я думаю, происходит, я рекомендую вам сделать mButtons членом класса.

*.час

private:
Buttons mButtons;
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]