QDialog появляется в левом верхнем углу родительской формы.
Диалог по умолчанию должен появляться в центре родительского окна. У меня вроде тоже был такой косяк после установки флагов. Сделал так:
move(parent->geometry().center().x() - rect().center().x(), parent->geometry().center().y() - rect().center().y());