zoukankan      html  css  js  c++  java
  • QML

    QML - 小例子 - 文件目录浏览器

    QML写动画比较方便,参考QML提供的例子写了如下在Android上可用的文件目录浏览器(电脑端其实也可用,只是还不完整)

    以上这两张截图是在电脑上直接运行时的样子,在Android手机上运行的话,会有一些小差异。

    FileListView.xml的代码大概如下:

    import QtQuick 2.3
    import Qt.labs.folderlistmodel 2.1
    import QtQuick.Controls.Styles 1.2
    import QtQuick.Controls 1.2
    
    Rectangle {
        id:root;
        state:"hidden";
        color: "#212126";
    
        property string folderPathName: "file:///H:/TTPmusic/";
        property bool rootPath:false;
        signal message(string msg);
        property int lineHeight: 90;
        signal selectedFolder(string folderPath);
    
        LineStyle{
            id:topLine;
            text: "...";
             root.width;
            height: root.lineHeight;
            fontSize:40;
            selectable:false;
            source: "res/image/arrow-1-backward.png";
            onClicked: {
                console.log("topLine  onClicked");
                if (folderModel.parentFolder != ""){
                    root.folderPathName = folderModel.parentFolder;
                    //text = root.folderPathName.slice(8);
                }
                else{
                    //Fns.set_path_result(0);
                    root.state = "hidden";
                }
    
                console.log("topLine root.folderPathName:", root.folderPathName);
                console.log("
           folderModel.folder:", folderModel.folder,
                            "
     folderModel.parentFolder:", folderModel.parentFolder,
                            "
       folderModel.rootFolder:", folderModel.rootFolder);
            }
        }
    
        ListView{
            id:listFileView;
            anchors{
                bottom: rectangleButton.top;
                bottomMargin: 4;
                right: root.right;
                rightMargin: 0;
                left: root.left;
                leftMargin: 0;
                top: topLine.bottom;
                topMargin: 0;
            }
            clip:true;
    
            delegate:LineStyle{
                text: fileName;
                height:root.lineHeight;
                root.width;
                fontSize:35;
                source: folderModel.get(index, "fileIsDir")?"res/image/folder.png":"";
                selectable:folderModel.get(index, "fileIsDir")?false:true;
                isdir: folderModel.get(index, "fileIsDir")?true:false;
                onClicked: {
                    console.log("
    listFileView  onClicked F:", folderModel.folder,
                                "
     folderModel.parentFolder:", folderModel.parentFolder,
                                "
       folderModel.rootFolder:", folderModel.rootFolder,
                                "
         folderModel.isFolder:", folderModel.isFolder(index));
                    console.log("
          fileName:",  folderModel.get(index, "fileName"),
                                "
          filePath:",  folderModel.get(index, "filePath"),
                                "
           fileURL:",  folderModel.get(index, "fileURL"),
                                "
      fileBaseName:",  folderModel.get(index, "fileBaseName"),
                                "
        fileSuffix:",  folderModel.get(index, "fileSuffix"),
                                "
          fileSize:",  folderModel.get(index, "fileSize"),
                                "
      fileModified:",  folderModel.get(index, "fileModified"),
                                "
      fileAccessed:",  folderModel.get(index, "fileAccessed"),
                                "
         fileIsDir:",  folderModel.get(index, "fileIsDir"));
                    if(folderModel.isFolder(index)){
                        root.folderPathName = folderModel.get(index, "fileURL");
                    }
                }
                onSelectfile: {
                    //add_song_to_list!
                    console.log("onSelectfile: ", folderModel.get(index, "fileURL"));
                }
            }
            model: FolderListModel{
                id:folderModel;
                objectName: "folderModel";
                showDirs: true;
                showFiles: true;
                showDirsFirst: true;
                nameFilters: ["*.mp3", "*.flac"];
                folder:root.folderPathName;
                onFolderChanged: {
                    console.log("onFolderChanged root.folderPathName:", root.folderPathName);
                    console.log("
                   folderModel.folder:", folderModel.folder,
                                "
             folderModel.parentFolder:", folderModel.parentFolder,
                                "
               folderModel.rootFolder:", folderModel.rootFolder);
                }
            }
        }
    
        Rectangle {
            id: rectangleButton;
            height: lineHeight;
            color: "#212126";
            anchors{
                left: root.left;
                leftMargin: 0;
                right: root.right;
                rightMargin: 0;
                bottom: root.bottom;
                bottomMargin: 0;
            }
    
            Rectangle{
                id:rectWhiteLine;
                anchors{
                    left:parent.left;
                    right: parent.right;
                    top:parent.top;
                }
                height: 2;
                color:"white";
            }
        }
    }

    留此备忘。

  • 相关阅读:
    [LeetCode]Add Binary
    基于Servlet、JSP、JDBC、MySQL的一个简单的用户注冊模块(附完整源代码)
    C语言scanf函数详解
    三层架构(我的理解及具体分析)
    HTML5系列之——applicationCache对象
    分布式系统浅析
    HDU 4421 Bit Magic (图论-2SAT)
    软考总结
    javabean总结
    linux经常使用命令
  • 原文地址:https://www.cnblogs.com/listensong/p/4202039.html
Copyright © 2011-2022 走看看