在标头中声明QPushButton时应用程序崩溃

时间:2012-01-27 02:04:15

标签: c++ qt button qt-creator

目前正在使用最新的QT Creator并开发一个小型教程应用程序。想要一个所有功能都可以使用的按钮并将其放在头文件中:

#ifndef GAMEBOARD_H
#define GAMEBOARD_H

#include <QWidget>
#include <QtGui/QPushButton>


class QLCDNumber;
class CannonField;
class QPushButton;

class Gameboard : public QWidget
{
    Q_OBJECT

public:
    Gameboard(QWidget *parent = 0);

private:
    QLCDNumber *remaning_shots;
    QLCDNumber *hits;
    CannonField *cannon_field;
    QPushButton *shootb;

public slots:
    void shoot();
    void hit();
    void missed();
    void restart();
};

#endif // GAMEBOARD_H

gameboard.cpp:

#include "cannonfield.h"
#include "gameboard.h"
#include "lcdrange.h"

Gameboard::Gameboard(QWidget *parent)
    : QWidget(parent) {

    shootb = new QPushButton(tr("Shoot"));

当我试图运行应用程序时,它甚至在它开始之前就崩溃了。我甚至不必使用任何按钮,它无论如何都会崩溃。我做错了什么?

或者我应该只使用信号?

QPushButton *shootb = new QPushButton(tr("Shoot"));
connect(this, SIGNAL(disableShoot(bool)), shootb, SLOT(setDisabled(bool)));

然后我称之为:

void Gameboard::missed() {
    emit disableShoot(true);
}

如果这是一个丑陋的解决方案,请纠正我。

0 个答案:

没有答案