QML學習之淺談Window
阿新 • • 發佈:2019-02-06
在Qt Quick的世界裡,Window物件用於建立一個與作業系統相關的頂層視窗,包含了如Text, Rectangle, Image等元素。Window還有一個派生類,即大名鼎鼎的ApplicationWindow,也可以作為QML文件的根物件。上一篇文章,我們提到的使用QQuickView載入QML的方式,頂層視窗是由QQuickView建立的。
要使用Window物件,需要使用下面這行程式碼來匯入Window模組:
import QtQuick.Window
2.2
1)Window物件可以建立一個新的頂層視窗來作為Qt Quick的活動場景,它會自動設定好 視窗的基本屬性,如圖示、標題、系統按鈕。當然也可以撰寫QML程式碼來設定視窗的屬性。下面來談談這些屬性。
Window在桌面上的位置,由x, y屬性決定,其大小由width,height屬性決定。除此之外,你還可以使用minimumWidth , minimumHeight來限制視窗的最小尺寸,使用maximumWidth,
maximumHeight來限制視窗的最大尺。作為受視窗管理系統控制的一個視窗,其顯示狀態有:正常、最小化、最大化、全屏、隱藏。PC作業系統的視窗管理系統多數都支援滑鼠拖動改變視窗的大小和位置。
Window對象的visibility 屬性用來設定這個視窗的顯示狀態,可以取下列值:
Window. Windowed,窗口占螢幕的一部分,視窗管理系統支援同時顯示多視窗時才有效。
Window.Minimized,最小化到工作列上的一個圖示。
Window.Maximized,最大化,佔用工作列之外的所有螢幕空間,標題欄依然顯示。
Window.FullScreen,全屏顯示,佔用整個螢幕,標題欄隱藏。
Window.AutomaticVisibility,給Window一個預設的顯示狀態,它的實際值與平臺實 現有關。
Window.Hidden, 隱藏,視窗不可見,與visible屬性的效果一樣。
視窗的隱藏、顯示由布林型別的visible屬性控制,設定其為true則顯示視窗,為false隱藏視窗。
color屬性用來設定視窗的背景顏色,可以用“blue",“#RRGGBB ", Qt.rgba()等形式為其賦值;
opacity屬性用來設定視窗透明度,取值範圍是0一1.0;
title屬性用來設定視窗的標題,字串型別;
activeFocusItem屬性型別是Item,儲存視窗中擁有活動焦點的Item,可能為null。
contentOrientation屬性用來設定視窗的內容佈局方向,可以取下列值:
Qt.PrimaryOrientation,使用顯示裝置的首選方向。
Qt.LandscapeOrientation,橫屏。
Qt.PortraitOrientation,豎屏。
Qt.InvertedLandscapeOrientation,相對於橫屏模式,旋轉了180°。
Qt.InvertedPortraitOrientation,相對於豎屏模式,旋轉了180°。
一個Qt Quick應用可能會有多個視窗,視窗之間的關係由modality(模態)屬性決定,一個模態的視窗會阻止其他視窗獲取輸入事件。modality可以取下列值:
a) Qt.NonModal,非模態。
b) Qt. WindowModal ,視窗級別的模態,設定此屬性的視窗只針對某一個視窗是模態的,如子視窗相對父視窗是模態的,相對同一應用中的其他非父視窗則沒有模態效果。
c) Qt.ApplicationModal,應用級別的模態,設定此屬性的視窗會阻止同一應用的其他窗口獲取輸入事件。
Window的flags屬性就是用來設定視窗標誌位的,取值與Qt C++一樣,不過要通過Qt.Widget, Qt.Popup這種形式來使用。
Window的data屬性為預設屬性,型別是list<Object>。
2)ApplicationWindow是Window的派生類,使用它需要使用下面的語句來引入Controls模組:
import QtQuick .Controls 1.2
ApplicationWindow有點兒像QMainWindow,有menuBar, toolBar, statusBar屬性,分別用來設定選單、工具欄、狀態列,還有contentltem,可以用來設定內容元素的尺寸屬性。