Qt中的大多数类都有一个默认构造函数。许多类使用QObject*
或QWidget*
作为构造函数参数,默认值为nullptr
。类QAction
也有一个以QObject*
为参数的构造函数,但没有默认值。因此,QAction
不是默认构造的。这是为什么? QAction
真的需要父母吗?或QAction
中还有其他不同之处可以解释这种不一致吗?
答案 0 :(得分:3)
这里只是一个猜测,但我会说它背后没有理由。
在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修复了。