1. 程式人生 > >使用QQuickWidget和QQmlApplicationEngine的不同之處

使用QQuickWidget和QQmlApplicationEngine的不同之處

萌夢社群原創文章,原文地址:http://qtdream.com/topic/682。禁止轉載

昨天為了將我們以前製作的產品從QQmlApplicationEngine - based移植到Qt Widgets應用當中,我做了一些修改。其中一個重要的部分就是將以前QQmlApplicationEngine的程式碼移植到QQuickWidget中。但是我發現其中有不一樣的地方,導致我原先的產品並不能工作。

具體來說,我的QML程式碼中有Qt.createQmlObject這樣的函式,並且設定了parent,這樣可以實現動態載入Item頁面,這在main.cpp中含有QQmlApplicationEngine

的程式碼是沒有問題的,但是一移植到QQuickWidget中就出現問題了。原先通過visible來切換顯示和隱藏的效果實現不了了。

後面我看了一下文件,文件是這麼說的。QQuickWidget禁用了多執行緒渲染,並且將Qt的Scene Graph渲染的內容渲染到FBO中再顯示。這樣可以避免和Widgets的stack order問題。但是我想正是由於這個原因(未考證),才會導致上文所說的不一致現象。具體的問題我還需要考察一下,使用QQuickViewQWidget::createWindowContainer()函式來測試一下是否可以解決問題。