在我的Qt 5.3的應用程序,我想從一個子進程的GUI融入我的主進程的窗口:繪圖錯誤和崩潰與QWidget的:: createWindowContainer
- 子進程創建一個頂級
QWidget
。 - 子進程通信的widget的
WId
從QWidget::winId()
返回給父(使用IPC)。 - 父使用
QWindow::fromWinId()
和QWidget::createWindowContainer()
創建QWidget
顯示子進程的GUI。這個小部件嵌入到另一個小部件的佈局中。
觀察:
- 孩子GUI顯示但不正確呈現:有沒有得到及時更新,當再次上漿父白色邊框。
- 如果父窗口調整得太小,由於Qt代碼中的內存訪問衝突,子進程崩潰。
- 如果我沒有指定
QWidget::createWindowContainer()
的父級來代替使用單獨的頂級窗口,那麼該子級就可以很好地嵌入。 - 當孩子打開一個模式對話框(如
QMessageBox
)後,該問題將自行修復,並且在父對象的下一個調整大小後,該子對象將被正確嵌入。
尤其是最後一點我感到困惑。我試圖找出是否運行QMessageBox
更改子部件上的某些標誌,並且如果我可以手動模擬這些更改以解決問題,而不是運氣。
有沒有人有一個想法這裏發生了什麼?模式對話框可能會對修復問題的小部件做些什麼?
謝謝你的回答!因爲我現在不在辦公室,所以我會在週一的CET上嘗試一下您的建議並給予反饋。我很高興看到您的簡單解決方案是否有效! –
耶,'FramelessWindowHint'修復了邊界渲染*和*崩潰!我很高興有這樣一個簡單的解決方案/解決方法。謝謝你,你贏得了賞金! :) –