【QML Demo】圖片瀏覽器V1.0
阿新 • • 發佈:2020-09-09
效果
先看效果圖:
程式碼
下面是一個圖片瀏覽器的簡單 Demo:
import QtQuick 2.11 import QtQuick.Window 2.11 import QtQuick.Controls 1.2 import QtQuick.Controls.Styles 1.2 import QtQuick.Dialogs 1.2 Window { id: window visible: true width: 640 height: 480 minimumWidth: 480 minimumHeight: 380 title: qsTr("ImageViewer") BusyIndicator { id: busy running: false anchors.centerIn: parent z: 2 } Text { id: stateLabel visible: false anchors.centerIn: parent z: 3 } Image { id: imageViewer asynchronous: true cache: false anchors.fill: parent fillMode: Image.PreserveAspectFit onStatusChanged: { if (imageViewer.status === Image.Loading) { busy.running = true stateLabel.visible = false } else if(imageViewer.status === Image.Ready) busy.running = false else if(imageViewer.status === Image.Error) { busy.running = false stateLabel.visible = true stateLabel.text = "Error" } } } Button { id: openFile text: "open" anchors.left: parent.left anchors.leftMargin: 8 anchors.bottom: parent.bottom anchors.bottomMargin: 8 style: ButtonStyle { background: Rectangle { implicitWidth: 70; implicitHeight: 25; border.width: control.pressed ? 2 : 1; border.color: (control.hovered || control.pressed) ? "green" : "#888888"; } } //按下按鈕,開啟檔案對話方塊 onClicked: fileDialog.open() z: 4 } Text { id: imageText anchors.left: openFile.right anchors.leftMargin: 8 anchors.verticalCenter: openFile.verticalCenter font.pixelSize: 20 } FileDialog { id: fileDialog title: "Please choose a ImageFile" nameFilters: ["Image Files (*.jpg *.png *.gif)"] onAccepted: { imageViewer.source = fileDialog.fileUrl var imageFile = new String(fileDialog.fileUrl) imageText.text = imageFile.slice(8) } } }
在 Open 按鈕的 onClicked 訊號處理器中,呼叫 FileDialog 物件的 open() 方法讓使用者選擇檔案。當用戶選擇檔案後會觸發 FileDialog 的 accepted 訊號,我為它建立了 onAccepted 訊號處理器,在訊號處理器內設定 imageViewer 的 source 屬性來顯示圖片,同時設定 imagePath的text 屬性來展示圖片檔案的路徑。