2
#include <QApplication>
#include <QFont>
#include <QPushButton>
#include <QWidget>

class MyWidget : public QWidget
{
public:
    MyWidget(QWidget *parent = 0);
};

MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
{
    setFixedSize(200, 120);

    QPushButton *quit = new QPushButton(tr("Quit"), this);
    quit->setGeometry(62, 40, 75, 30);
    quit->setFont(QFont("Times", 18, QFont::Bold));

    connect(quit, SIGNAL(clicked()), qApp, SLOT(quit()));
}

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    MyWidget widget;
    widget.show();
    return app.exec();
}

对于这一行: MyWidget(QWidget *parent = 0); 为什么我们需要放在 = 0这里?

4

3 回答 3

3

它被称为默认参数

基本上你是说除非你传递另一个值,否则函数(或本例中的构造函数)将被调用,父级为 0。

当您MyWidget(QWidget *parent);作为构造函数时,您必须像这样称呼它MyWidget widget(0);

于 2011-03-12T08:37:04.630 回答
1

您不必在此处输入零。C++ 允许您为参数设置默认值。在这种情况下,parent如果在没有指定参数的情况下调用构造函数,则参数将默认为 0。

于 2011-03-12T08:38:01.027 回答
0

不需要把它放在那里,但它是一个默认值。如果您不向构造函数传递任何值,它将以“0”作为值。在某些情况下,对于程序员来说,它让事情变得更容易一些。

于 2011-03-12T08:37:04.773 回答