为什么QAction没有默认构造函数?

时间:2016-10-11 08:27:55

标签: c++ qt constructor qaction

Qt中的大多数类都有一个默认构造函数。许多类使用QObject*QWidget*作为构造函数参数,默认值为nullptr。类QAction也有一个以QObject*为参数的构造函数,但没有默认值。因此,QAction不是默认构造的。这是为什么? QAction真的需要父母吗?或QAction中还有其他不同之处可以解释这种不一致吗?

1 个答案:

答案 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修复了。