我有这段代码:
#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 :(得分:8)
这是带有默认参数(NULL
的构造函数的参数,因为NULL
根据c ++标准定义为0
。默认意味着不传递参数与传递NULL
相同。
由于Qt的小部件是按层级系统排列的(父级 - >子级关系),因此父级是小工具,它是当前小工具的“所有者”或“容器”(NULL
表示没有父级也称为根小部件)。对于GUI项目,窗口小部件通常将其包含的窗口小部件作为其父项。
这是有利的,因为当删除父项时,它将删除任何子项已经自动删除了对c ++附带的大量内存管理的需要。
答案 1 :(得分:1)
父参数用于为父母提供新的小部件。给定时,Qt管理对象树很有用。 (自动删除子对象。)它还具有将新窗口小部件“附加”到另一个窗口小部件(即父窗口)的具体可见效果。但是,在您的代码中,不会给出父参数,导致窗口小部件显示为顶级窗口,而不会被Qt自动删除。 (尽管如此,它不需要在Qt中删除。)
答案 2 :(得分:0)
它是一个0
指针(认为没有类型的NULL),或者在Qt术语中,“没有父级”。