c++ - 本书中的qt示例

标签 c++ qt qt-creator

我有这段代码:

 #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);

有点难以理解这个父级是什么,在此先感谢

最佳答案

这是带有默认参数的构造函数的参数(NULL,因为根据 c++ 标准,NULL 被定义为 0)。默认意味着不传递参数与传递 NULL 相同。

由于 Qt 的小部件是按层次系统排列的(父级 -> 子级关系),父级是作为当前小部件的“所有者”或“容器”的小部件(NULL 表示没有父级又名各种根小部件)。对于 GUI 项,小部件通常会将其包含在其中的小部件作为其父级。

这是有利的,因为当父项被删除时,它会删除任何子项,因为它自动消除了对 c++ 附带的大部分内存管理的需要。

关于c++ - 本书中的qt示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3240284/

相关文章:

c++ - C++14 中对数组的自动右值引用(不带 &&)

c++ - DBus 上的 BlueZ 在不同的时间间隔内停止响应

c++ - 从文件中读取数据并将其存储到 vector 中

qt - 为什么 ldd 对不同目录中的同一文件产生不同的结果?

qt - qmake 为不同命名空间中具有相同名称的 2 个类生成重复符号

c++ - QT ui 指针中缺少属性和方法

c++ - mbstowcs_s 的 Microsoft 实现是线程安全的吗?

c++ - 我们必须删除 QUdpSocket 吗?

c++ - 无法从 vector 访问初始化结构的内容

c++ - Qt:如何创建 Windows DLL(导出函数)?