Возможно несколько вещей. Прежде всего QMessageBox
наследуется от QDialog
. Поскольку QDialog
имеет понятие родителя, QMessageBox
также должно быть согласованным.
В частности, документация гласит:
parent передается конструктору QDialog.
По крайней мере, новое диалоговое окно часто отображается в центре его родителя.
Однако, есть еще!
Согласно документации это может повлиять на функциональность. Например:
В Mac OS X, если вы хотите, чтобы ваше окно сообщений отображалось как Qt :: Sheet of
parent , установите модальность окна сообщения Qt :: WindowModal
или используйте open (). В противном случае окно сообщения будет стандартным диалоговым окном.
Кроме того, существует концепция «модальности окна» и «модальности приложения», где первая предотвращает ввод только в родительское окно, а вторая запрещает ввод для всего приложения. Это, очевидно, требует, чтобы концепция родителя была известна.
Наконец, для некоторых static
функций, таких как ::about(...)
, первое место, где он ищет значок, это parent->icon()
.
Итак, если вы хотите получить хорошее поведение, специфичное для платформы, и ваш код должен быть кроссплатформенным, вам лучше передать ему нормального родителя.