为什么 QAction 没有默认构造函数?
Why does QAction not have a default constructor?
Qt 中的大多数 classes 都有默认构造函数。许多 classes 将 QObject*
或 QWidget*
作为构造函数参数,默认值为 nullptr
。 class QAction
也有这样一个以 QObject*
作为参数的构造函数,但没有默认值。因此,QAction
不是默认可构造的。这是为什么? QAction
真的需要 parent 吗?或者在 QAction
中是否还有其他不同之处可以解释这种不一致?
这里只是一个猜测,但我想说这背后没有任何理由。
在 Qt 4.8 中,签名(如您所述)没有父级的默认值。
QAction(QObject * parent)
见http://doc.qt.io/qt-4.8/qaction.html
这在 Qt 5.7 中发生了变化
QAction(QObject *parent = nullptr)
见http://doc.qt.io/qt-5/qaction.html
所以我认为这是一个偶然的不一致,最终在 Qt 5.7 中得到了修复。
Qt 中的大多数 classes 都有默认构造函数。许多 classes 将 QObject*
或 QWidget*
作为构造函数参数,默认值为 nullptr
。 class QAction
也有这样一个以 QObject*
作为参数的构造函数,但没有默认值。因此,QAction
不是默认可构造的。这是为什么? QAction
真的需要 parent 吗?或者在 QAction
中是否还有其他不同之处可以解释这种不一致?
这里只是一个猜测,但我想说这背后没有任何理由。
在 Qt 4.8 中,签名(如您所述)没有父级的默认值。
QAction(QObject * parent)
见http://doc.qt.io/qt-4.8/qaction.html
这在 Qt 5.7 中发生了变化
QAction(QObject *parent = nullptr)
见http://doc.qt.io/qt-5/qaction.html
所以我认为这是一个偶然的不一致,最终在 Qt 5.7 中得到了修复。