翻譯|使用教程|編輯:鮑佳佳|2020-09-10 14:07:42.167|閱讀 606 次
概述:本示例以一種簡單的方式展示了應用程序管理器API,它是具有服務器端窗口裝飾的經典桌面。該示例更多地關注概念,而不關注優雅或完整性。例如,沒有錯誤檢查完成。此最小桌面系統中的某些功能僅打印調試消息。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Qt(發音為“ cute”,而不是“ cu-tee”)是一個跨平臺框架,通常用作圖形工具包,它不僅創建CLI應用程序中也非常有用。而且它也可以在三種主要的臺式機操作系統以及移動操作系統(如Symbian,Nokia Belle,Meego Harmattan,MeeGo或BB10)以及嵌入式設備,Android(Necessitas)和iOS的端口上運行。現在我們為你提供了免費的試用版。趕快點擊下載Qt最新試用版吧>>
桌面系統用戶界面示例
本示例以一種簡單的方式展示了應用程序管理器API,它是具有服務器端窗口裝飾的經典桌面。該示例更多地關注概念,而不關注優雅或完整性。例如,沒有錯誤檢查完成。此最小桌面系統中的某些功能僅打印調試消息。
支持以下功能:
注意:此示例可以在單進程或多進程模式下運行。在下面的演練中,我們使用多進程及其相應的術語。術語客戶和應用 ; 服務器和系統UI可以互換使用。系統UI包括合成和通用的進程間通信(IPC)。
要開始示例,請導航到該minidesk文件夾,然后運行以下命令:
-c am-config.yaml
該appman二進制文件(可執行文件),通常位于Qt的安裝bin文件夾中。
系統界面窗口
import QtQuick 2.11 import QtQuick.Window 2.11 import QtApplicationManager.SystemUI 2.0 Window { title: "Minidesk - QtApplicationManager Example" width: 1024 height: 640 color: "whitesmoke" Readme {} Text { anchors.bottom: parent.bottom text: (ApplicationManager.singleProcess ? "Single" : "Multi") + "-Process Mode" } ...
該QtApplicationManager.SystemUI模塊需要導入來訪問應用程序管理器的API。系統UI窗口具有固定的大小和“ whitesmoke”背景色。除了Window之外,root元素還可以是常規項目,例如Rectangle。應用程序管理器會為您將其包裝在一個窗口中。在背景頂部,我們顯示一個Readme元素,其中包含有關可用功能的信息。左下角有一個文本指示,指示應用程序管理器是在單進程模式還是多進程模式下運行。
// Application launcher panel Column { Repeater { model: ApplicationManager Image { source: icon opacity: isRunning ? 0.3 : 1.0 MouseArea { anchors.fill: parent onClicked: isRunning ? application.stop() : application.start("documentUrl"); } } } }
中繼器提供了設置在一個應用程序圖標列在系統UI的左上角; 所述ApplicationManager元件是模型。其中,ApplicationManager提供了icon用作圖像源URL 的角色。該iconURL是在應用程序的定義info.yaml文件。為了指示應用程序已啟動,通過將其綁定到isRunning角色來減少相應應用程序圖標的不透明度。
單擊應用程序圖標可通過調用ApplicationObject.start()啟動相應的應用程序。可通過ApplicationManager模型中的application角色訪問此功能。這兩個應用程序均以(可選)文檔URL開頭(documentUrl)。如果應用程序已經在運行,則調用ApplicationObject.stop()。
Windows系統界面中的應用程序
// System UI chrome for applications Repeater { model: ListModel { id: topLevelWindowsModel } delegate: Image { source: "chrome-bg.png" z: model.index Text { anchors.horizontalCenter: parent.horizontalCenter text: "Decoration: " + (model.window.application ? model.window.application.name("en") : 'External Application') } MouseArea { anchors.fill: parent drag.target: parent onPressed: topLevelWindowsModel.move(model.index, topLevelWindowsModel.count - 1, 1); } Rectangle { width: 25; height: 25 color: "chocolate" MouseArea { anchors.fill: parent onClicked: model.window.close(); } } WindowItem { anchors.fill: parent anchors.margins: 3 anchors.topMargin: 25 window: model.window Connections { target: window function onContentStateChanged() { if (window.contentState === WindowObject.NoSurface) topLevelWindowsModel.remove(model.index, 1); } } } Component.onCompleted: { x = 300 + model.index * 50; y = 10 + model.index * 30; } } }
該模型是一個普通的ListModel ,它由WindowManager創建的窗口對象所提供。下面顯示了填充此ListModel的窗口角色的代碼。現在,讓我們集中討論此Repeater的代表包括什么:
未完待續.......下一篇文章我們將發布完整版代碼!
本篇文章中的內容你都學會了嗎?如果這篇文章沒能滿足你的需求、點擊獲取更多文章教程!現在立刻下載Qt免費試用吧!更多Qt類開發工具QtitanRibbon、QtitanChart、QtitanNavigation、QtitanDocking、QtitanDataGrid在線訂購現直降1000元,歡迎咨詢慧都獲取更多優惠>>
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: