Qt:不能'连接QWidget和QObject之间的插槽

时间:2015-05-06 18:27:52

标签: qt signals qwidget slots

我试图了解为什么这不会起作用。我试图将QWidget对象信号与QObject插槽连接起来。我没有收到任何错误,但是在窗口出现之前意外结束了。

Main.cpp的

#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

Widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QPushButton>
#include <QHBoxLayout>
#include "gameengine.h"
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
private:
    Ui::Widget *ui;
    QHBoxLayout * layout;
    QPushButton * buttons[10];
    QPushButton * startButton;
    GameEngine * game;
};

#endif // WIDGET_H

Widget.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent)
{
    layout = new QHBoxLayout(this);
    for (int i = 0; i < 10; i++) {
        buttons[i] = new QPushButton(QString::number(i));
        buttons[i]->setDisabled(true);
        layout->addWidget(buttons[i], 0, Qt::AlignLeft);
    }
    startButton = new QPushButton("New Game");
    layout->addWidget(startButton);

    connect(startButton, SIGNAL(clicked()), game, SLOT(startGame()));

}

我没有粘贴在GameEngine类中,因为它只获得了startGame()函数,但该函数还没有包含任何代码。

1 个答案:

答案 0 :(得分:1)

忘记初始化GameEngine对象......