为什么我没有在Qt Widget中显示?

时间:2011-02-27 03:49:22

标签: c++ qt qt4

当我运行它时它会立即完成并且不会显示任何内容。我找不到任何错误,#qt也没有人。我有其他应用程序正常工作,所以我不确定。它与createForm调用有关,如果我在构造函数中省略了该调用,我会显示默认的QWidget。

captchit.pro

    #-------------------------------------------------
    #
    # Project created by QtCreator 2011-02-26T20:58:23
    #
    #-------------------------------------------------

QT += core gui network

TARGET = captchit TEMPLATE = app

SOURCES += main.cpp\ widget.cpp

HEADERS += widget.h

的main.cpp

    #include "QtGui/QApplication"
    #include "widget.h"

int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget mainWidget; mainWidget.show();

return a.exec();

}

widget.h return a.exec();

widget.cpp #ifndef WIDGET_H #define WIDGET_H

#include <QWidget>

class QPixmap; class QLabel; class QLineEdit; class QPushButton;

class Widget : public QWidget { Q_OBJECT

public: Widget(QWidget *parent = 0);

private slots: void on_refreshButton_pressed(); void on_submitButton_pressed(); void on_closeButton_pressed();

private: QPixmap captchaImage; QLabel *imageLabel; QLabel *statusLabel; QLineEdit *captchaLineEdit; QPushButton *submitButton; QPushButton *refreshButton; QPushButton *closeButton;

void createForm();
void createActions();
void getCaptcha();
void submitCaptcha();

};

endif // WIDGET_H

#include <QWidget>

2 个答案:

答案 0 :(得分:2)

在使用它们之前,您可能需要在构造函数中初始化您的私有类成员。

Widget::Widget(QWidget* parent) :
    QWidget(parent)
{
    captchaImage = new QPixmap;
    imageLabel = new QLabel(this);
    statusLabel = new QLabel(this);
    captchaLineEdit = new QLineEdit(this);
    submitButton = new QPushButton(this);
    refreshButton = new QPushButton(this);
    closeButton = new QPushButton(this);

    createForm();
//    createActions();
}

另请注意,QPixmap不是从QObject派生的,因此您必须手动删除它。最好从类中删除QPixmap *captchaImage成员,并在代码中使用临时QPixmap对象。

答案 1 :(得分:0)

哎呀,这是因为我忘了初始化我的所有组件,herp derp。