zoukankan      html  css  js  c++  java
  • 【QML Demo】图片浏览器V1.0

    效果

    先看效果图:

    代码

    下面是一个图片浏览器的简单 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
         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. 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 属性来展示图片文件的路径。


  • 相关阅读:
    MySQL数据库的基本数据类型
    Mybatis学习记录(八)----Mybatis整合Spring
    Mybatis学习记录(七)----Mybatis查询缓存
    Mybatis学习记录(七)----Mybatis延迟加载
    Mybatis学习记录(六)----Mybatis的高级映射
    Mybatis学习记录(五)----Mybatis的动态SQL
    Mybatis学习记录(四)----resultMap的使用
    Mybatis学习记录(三)----理解SqlMapConfig.xml文件
    Vue生命周期
    vue简单路由(二)
  • 原文地址:https://www.cnblogs.com/linuxAndMcu/p/13636830.html
Copyright © 2011-2022 走看看