У меня возникли проблемы с подключением сигнала в 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()));
Любая помощь будет принята с благодарностью