Я разрабатываю программу для Mac OS X, используя Qt 4.8 в качестве названия. Теперь я столкнулся с проблемой, на которую я потратил много времени, но до сих пор не могу решить.
У меня есть QWidget (называемый A), который откроет QMainWindow (называемый B) после некоторой операции. Когда B открыт, мне нужно, чтобы A был заблокирован B, поэтому я устанавливаю A как родителя B и устанавливаю модальность окна B в Qt::WindowModal.
На другой платформе это работает так, как я думал, однако, когда дело доходит до Mac, у B нет собственной строки заголовка, она просто всплывает и прикрепляется к строке заголовка A. А также кнопка закрытия на строка заголовка A неактивна, что означает, что я не могу закрыть B с помощью кнопки, мне нужно использовать выход QAction в QMenu, чтобы закрыть его.
Когда я устанавливаю для родителя B значение 0 (NULL) вместо B, тогда у него будет независимая строка заголовка, как в Windows или Linux, это то, что я хочу. Однако он потерял свойство, которое B заблокировал A.
Я пытался установить флаги Windows, такие как Qt::CustomizeWindowHint и т. д., но ничего не работает.
Есть ли способ сохранить иерархические отношения между A и B и дать B независимую строку заголовка на Mac? Спасибо всем за помощь :)
пс. Я попробовал небольшую программу и обнаружил, что эта ситуация происходит только в WindowModal (NonModal и ApplicationModal работают нормально)