Большинство классов в Qt имеют конструктор по умолчанию. Многие занятия занимают QObject*
или же QWidget*
в качестве аргумента конструктора со значением по умолчанию nullptr
, Класс QAction
также имеет такой конструктор, принимающий QObject*
в качестве аргумента, но нет значения по умолчанию. Следовательно, QAction
не является конструируемым по умолчанию. Это почему? Делает QAction
действительно нужно иметь родителя? Или есть что-то другое в QAction
что объясняет это несоответствие?
Просто предположение здесь, но я бы сказал, что нет никаких причин для этого.
В Qt 4.8 подпись (как вы упомянули) не имеет значения по умолчанию для parent.
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.
Других решений пока нет …