QT5.3 雜記


Qt5下,QWidget系列從QtGui中被剝離出去,成為單獨的QtWidget模塊。隨着Qt Quick2的引入,QtDeclarative也逐漸和QWidget系列也脫離關系。

最終:在Qt5下的GUI編程,有兩套不同的東西

  • QtWidget (使用一個被稱為 BackingStore 的東西)

  • QtQuick (使用一個被稱為 Scene Graph 的東西)

 

Qt4中的QDeclarativeView等一系列的東西被改成了QQuickView和QQmlItem等分別放到了QtQuick和QtQml模塊。
QQuickView這一套框架完全脫離了QWidget的束縛,一路從QSurface到QWindow繼承下來,雖說是窗口,但感覺卻又不像是窗口。
QQuickView本能是使用OpenGL,使用硬件加速。

 

QQuickView 提供了一個窗體用於顯示UI
QQmlEngine 提供QML運行的環境
QQuickWindow 顯示窗體,以及對item對象的管理及用戶交互

QQmlApplicationEngine 從Qt5.1開始提供的一個便捷對象 包含QQmlEngine和QQmlComponent能夠根據一個qml文件創建一個application。

QQmlContext 類為對象的實例化以及表達式的評估提供了一個上下文環境。所有的對象都在一個特定的上下文中實例化,並且應用程序運行中要執行的表達式都在一個特定的上下文中執行。這個上下文定義了符號是如何被解析的,以及表達式操作的值。

QQmlComponent 類可以用來加載QML文檔。它需要QQmlEngine來實例化定義在QML文檔中的對象層次

一個典型的QML應用程序有一個C++函數的入口點,該入口點是:實例化一個QQmlEngine並且使用QQmlComponent加載一個QML文檔。引擎(QQmlEngine對象)提供了一個默認的QQmlContext,這是一個頂級的上下文,用於執行定義在QML文檔中的方法和表達式。定義在QML文檔中的對象層次將會通過調用QQmlComponent實例化對象的create()方法被實例化。

客戶端可能需要通過注入屬性或者對象到上下文中修改引擎提供的默認QQmlContext。它們可以通過調用QQmlEngine::rootContext()方法來訪問頂級的上下文。

在實例化對象之后,客戶端通常就將控制權傳遞給應用程序的事件循環,以使得用戶輸入時間(例如鼠標點擊)可以被應用程序分發和處理。

 

 

 

QML里面Row代表一行數據,所以item是按列來排的

QML里面Column是代表一列數據,所以Item是按行排的

在Row和Column中anchors(錨點)是不起作用的

 

RowLayout和ColumnLayout 也是代表一行與一列但是提供了多種的Layout附加屬性並且可以使用anchors

 

在QML中獲取屏幕分辨率,可以通過Screen對象的多種屬性方式:例如

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM