Проблемы с подключением сигнала QPushButton к слоту QGraphicsView

У меня проблемы с подключением сигнала в QPushButton в щель в моем QGraphicsView,

Мой заголовок кнопки:

class Button : public QPushButton {

Q_OBJECT

public://public constructors / destructors

Button(Game_state * game_state, QWidget *parent = 0);
~Button();

protected://signals / slots etc QT
void mousePressEvent(QMouseEvent * event);//

signals:
void updated() { std::cout << "HELLO FROM THE UPDATED METHOD" << std::endl;}

protected:
Game_state * game_state;//this is the global gamestate method
char * action_name;//this is the application name that is responsible for setting the game_state so the game controller knows what to delete / update

};

Вам нужно Q_Object макрос для компиляции со слотами, но когда я компилирую, я продолжаю получать ссылку на vtable, не найденную, как показано ниже:

Undefined symbols for architecture x86_64:
"vtable for Button", referenced from:
Button::~Button()in buttons.o
Button::~Button()in buttons.o
Button::~Button()in buttons.o
Button::Button(Game_state*, QWidget*)in buttons.o
Button::Button(Game_state*, QWidget*)in buttons.o

Когда я вынимаю макрос, я могу скомпилировать его нормально, но я продолжаю получать эту ошибку при запуске:

Object::connect: No such signal QPushButton::updated() in implementation/game_controller.cpp:11

мой game_controller продолжается QGRaphicsView и вот мой код, где я пытаюсь подключить кнопку:

this->button = new Button(game_state);
this->proxy = new QGraphicsProxyWidget();
this->proxy = this->scene->addWidget(this->button);

connect(this->button, SIGNAL(updated()), this, SLOT(update()));

Любая помощь будет принята с благодарностью

0

Решение

Держите Q_OBJECT, он вам нужен для moc

Не пишите тело вашего сигнала, moc генерирует код для всех сигналов.

Не обрабатывайте mousePressedEvent, обрабатывайте сигнал clicked (), который доступен для QAbstractButton и всех его дочерних классов.

1

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

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