精华内容
下载资源
问答
  • QML目录导航列表 /目录文件 /文件过滤 /递归 /事件 /高亮当前行 /当前选项 /目录切换动画 /限制根目录
  • QML之ListView列表视图

    千次阅读 2017-06-13 17:04:56
    //一个.qml文件也是一个组件,一样可以最委托 id : mycomponent Rectangle { height : 60 width : 400 //color: mylist.isCurrentItem ? "red" : "gray"//是否为当前项,我...
    
    Rectangle{
            x:20
            y:20
            height: 50
            width: 50
            radius: 5
            color: mous.pressed ? "red" :"gray"
            Text {
                anchors.centerIn: parent
                font.pixelSize: 30
                text: qsTr("+")
            }
            MouseArea{//一些操作获取方式
                id:mous
                anchors.fill: parent
                onClicked: {mylist.incrementCurrentIndex();
                    //mylist.model.append({"name":"黄昏","score":88})//追加了一项数据
                    //mylist.model.insert(2,{"name":"落日","score":88})//插入一项数据,index为2
                    //mylist.model.move(0,5,2);//移动,第一个参数表示从index为0开始,移动个数为第三个参数
                                             //第二个参数为移动后的index
                    //mylist.model.set(2,{"name":"落日","score":88})//重新设置改变index为2的数据值
                    //注意,如果set的index值等于count,则添加一个新的数据,相当append。
                    //mylist.model.setProperty(2,"name","夕阳")//设置index数据,一次只能设置一个。index得小count
                    //mylist.model.sync()// can only be called from a WorkerScript
     
    
                }
            }
        }
     
    
        Rectangle{
            x:960
            y:20
            height: 50
            width: 50
            radius: 5
            color: mous1.pressed ? "red" :"gray"
            Text {
                anchors.centerIn: parent
                font.pixelSize: 30
                text: qsTr("-")
            }
            MouseArea{//一些操作获取方式
                id:mous1
                anchors.fill: parent
                onClicked: {//mylist.decrementCurrentIndex();
                    //mylist.model.clear();//全部清除数据
                    //console.log(mylist.model.get(1).score);//get获取到第几个Index的信息
                    //mylist.model.remove(1);//删除掉参数对应的index数据
     
    
                }
            }
        }
     
    
       Component{
           id:myfooter
           Rectangle{
            height: 50
            width: 400
            color: "red"
            Text {
                anchors.centerIn: parent
                font.pixelSize: 30
                text: mylist.count
            }
     
    
           }
       }
       Component{
           id:myheader
           Rectangle{
            height: 50
            width: 400
            color: "red"
            Text {
                anchors.centerIn: parent
                font.pixelSize: 15
                text: "count:" + mylist.count + "  currentSection:" + mylist.currentSection
            }
           }
       }
     
    
       Component{
           id:myhighlight
           Rectangle{
            z:2
            height: 50
            width: 400
            color: "green"
     
    
           }
       }
     
    
        ListView {
            id:mylist
            height: 400
            width: 400
            y:50
            anchors.horizontalCenter: parent.horizontalCenter
            //count: 5 //只读属性
            //currentSection: 只读属性
            //currentIndex: 2//当前项
            spacing: 10 //子项之间的间隙
            footer:myfooter //列表的页脚,类型Component
            //header: myheader //列表的标题或者说是头部
            //highlight: myhighlight  //高亮显示
            //highlightFollowsCurrentItem: true//当前项改变的时候,高亮显示会跟着移动
            //highlightMoveDuration: 500
            //highlightMoveSpeed: 200 //高亮的移动速度
            //highlightRangeMode: ListView.ApplyRange
            //ListView.StrictlyEnforceRange
            //ListView.NoHighlightRange
            //highlightResizeDuration: 100
             //highlightResizeSpeed: 500
            //highlightItem只读属性
           // preferredHighlightBegin: 2
            //preferredHighlightEnd: 5
     
    
            keyNavigationWraps: true  //当前项头尾互切(到达最后一项再增加到下一项即可返回第一项)incrementCurrentIndex()
            //orientation: ListView.Horizontal//列表的方向,水平
            orientation:ListView.Vertical //默认垂直方向
            layoutDirection: Qt.LeftToRight //水平布局方向
            //layoutDirection: Qt.RightToLeft
            //section.criteria: ViewSection.FullString //
            //section.criteria: ViewSection.FirstCharacter
            //section.delegate: myheader
            //section.property: "hello"
     
    
            //snapMode: ListView.NoSnap //拖动停止设置默认,可见区域任意点可停止
            //snapMode: ListView.SnapToItem //
            //snapMode: ListView.SnapOneItem//移动一个Item,对于一次翻转一个界面很有用
     
    
            delegate: mycomponent //委托,进行实例显示
            model:mymodel //myvisual//数据模型
            //数据模型有, ListModel ,XmlListModel,VisualItemModel,还有C++提供的数据模型
            
            
            Component{//Component把元素封装成一个组件,作为列表的委托,实例显示
                      //一个.qml文件也是一个组件,一样可以最委托
                id:mycomponent
                Rectangle{
                    height: 60
                    width: 400
                    //color: mylist.isCurrentItem ? "red" : "gray"//是否为当前项,我的没起作用
                    color: mylist.currentIndex ==index ? "red" : "gray"//当前光标是否等于index,个人感觉和isCurrentItem这个属性是一样的作用
                    Text{
                        anchors.centerIn: parent
                        font.pixelSize: 25
                        text:name +": " +score //从数据模型里面获取的数据
                    }
                    
                }
            }
     
    
            ListModel{//简单的ListElement容器
                id:mymodel
                ListElement{name:"张三";score:82} //可以添加很多数据内容,委托给delegate显示
                ListElement{name:"李四";score:75}
                ListElement{name:"王五";score:96}
                ListElement{name:"黄六";score:76}
                ListElement{name:"启华";score:25}
                ListElement{name:"京东";score:68}
                ListElement{name:"淘宝";score:35}
                ListElement{name:"乐视";score:46}
                ListElement{name:"三星";score:78}
                ListElement{name:"华为";score:59}
                ListElement{name:"电信";score:82}
                ListElement{name:"移动";score:52}
                ListElement{name:"小米";score:99}
                ListElement{name:"联通";score:27}
                ListElement{name:"魅族";score:89}
            }
     
    
            VisualItemModel{//使用VisualItemModel数据模型不需要委托显示
                            //数据模型中是是含有元素的,根据index来显示不同的item
                id:myvisual
                Rectangle{height: 100;width: 400;radius: 5;color: "red"}
                Rectangle{height: 100;width: 400;radius: 5;color: "blue"}
                Rectangle{height: 100;width: 400;radius: 5;color: "yellow"}
                Rectangle{height: 100;width: 400;radius: 5;color: "#567890"}
                Rectangle{height: 100;width: 400;radius: 5;color: "#887766"}
     
    
     
    
            }
        }
     说明:简单点来说,列表视图只要是分为三个部分,一个是列表控制元素listview,一个是数据模型model,一个是delegate委托代理实例化显示model的数据。
    需要注意的是,当model为Visual了ItemModel时候不需要delegate代理显示,因为这个model本身就是用来显示的。
     
    
    
    
     
    
     
    
     
    
     
    
     
    
     
    
     
    
     
    
    展开全文
  • qml使得图片旋转

    2021-02-25 15:25:17
    Image { id: loginSuccessLogo source: "qrc:/image/Icon.png" anchors.top: parent.top anchors.topMargin: 79 anchors.left: parent.left anchors.leftMargin: 44 visible: true NumberA.
    Image {
            id: loginSuccessLogo
            source: "qrc:/image/Icon.png"
            anchors.top: parent.top
            anchors.topMargin: 79
            anchors.left: parent.left
            anchors.leftMargin: 44
            visible: false
            NumberAnimation {
                running: loginSuccessLogo.visible
                loops: Animation.Infinite
                target: loginSuccessLogo
                from: 0
                to: 360
                property: "rotation"
                duration: 1000
            }
        }

     

    展开全文
  • Qt qml listview下拉刷新和上拉分页主要根据contentY来判断。但要加上顶部下拉指示器、滚动条,并封装成可简单调用的组件,着实花了我不少精力:) 【先看效果】   【功能】 1 下拉刷新和上拉分页逻辑 2 ...

    Qt qml listview下拉刷新和上拉分页主要根据contentY来判断。但要加上顶部下拉指示器、滚动条,并封装成可简单调用的组件,着实花了我不少精力:)

    【先看效果】

      

    【功能】

    复制代码
     1 下拉刷新和上拉分页逻辑
     2     /下拉刷新
     3     /上拉更多
     4     /滚动栏
     5     /工具栏半拉显隐
     6 Author: surfsky.cnblogs.com
     7 Lisence: MIT 请保留此文档声明
     8 History:
     9     init. surfsky.cnblogs.com, 2015-01
    10     add initPosition property. 2015-01
    复制代码

     

    【下载】

    http://download.csdn.net/detail/surfsky/8516981

     

    【调用】

    控件使用非常简单,只要实现 onLoad 和 onLoadMore 事件即可,其他的和标准的ListView差不多。

    复制代码
     1 /**
     2 新闻示例
     3     下拉刷新
     4     上拉分页
     5     滚动轴
     6     顶部工具栏
     7     顶部工具栏自动吸附
     8     当前行高亮
     9 Author: surfsky.cnblogs.com 2015-01
    10 */
    11 ListViewEx{
    12     id: view
    13     width: 500
    14     height: 800
    15     pageSize: 50
    16     snapHeader: true
    17     initPosition: 'header'
    18 
    19     // 顶部新闻图片栏
    20     headerComponent: Component{
    21         PageView{
    22             id: pv
    23             width: view.width
    24             height: 100
    25             clip: true
    26             Rectangle{width:pv.width; height:pv.height; color: 'green'}
    27             Rectangle{width:pv.width; height:pv.height; color: 'yellow'}
    28             Rectangle{width:pv.width; height:pv.height; color: 'blue'}
    29         }
    30     }
    31 
    32     // 行UI代理
    33     delegate: Text {
    34         id: wrapper;
    35         width: parent.width;
    36         height: 32;
    37         font.pointSize: 15;
    38         verticalAlignment: Text.AlignVCenter;
    39         horizontalAlignment: Text.AlignHCenter;
    40         text: content;
    41         //color: ListView.view.currentIndex == index ? "white" : "#505050";
    42         MouseArea {
    43             anchors.fill: parent;
    44             onClicked:  wrapper.ListView.view.currentIndex = index;
    45         }
    46     }
    47 
    48 
    49     //-----------------------------------------
    50     // 数据加载事件
    51     //-----------------------------------------
    52     onLoad:{
    53         for (var i = 0 ; i < pageSize ; ++i)
    54             model.append({"index": i, "content": "Item " + i})
    55     }
    56     onLoadMore:{
    57         for (var i = pageSize*page ; i < pageSize*(page+1); ++i)
    58             model.append({"index": i, "content": "Item " + i})
    59     }
    60 }
    复制代码

     

    【核心代码】

    实在太长了,截取ContentY处理部分,其他的下载了看吧

    复制代码
     1     //-------------------------------------
     2     // 下拉刷新和上拉分页逻辑
     3     //-------------------------------------
     4     onMovementEnded: {
     5         //console.log("movementEnded: originY:" + originY + ", contentY:" + contentY + ", reflesh:" + needReflesh + ", more:" + needLoadMore);
     6         // 刷新数据
     7         if (needReflesh){
     8             lv.headerItem.goState('load');
     9             model.reflesh();
    10             needReflesh = false;
    11         }
    12         // 加载新数据
    13         else if (needLoadMore){
    14             model.loadMore();
    15             needLoadMore = false;
    16         }
    17         else {
    18             var h1 = lv.headerItem.loader.height;
    19             var h2 = lv.headerItem.indicator.height;
    20 
    21             // 头部区自动显隐(拖动过小隐藏头部,反之显示)
    22             if (snapHeader){
    23                 if (contentY >= -h1/3 && contentY < 0)
    24                     moveToFirst();
    25                 if (contentY >= -h1 && contentY < -h1/3)
    26                     moveToHeader();
    27             }
    28             // 刷新区自动显隐
    29             if (contentY >=-(h1+h2) && contentY < -h1)
    30                 moveToHeader();
    31         }
    32     }
    33     onContentYChanged: {
    34         // 下拉刷新判断逻辑:已经到头了,还下拉一定距离
    35         if (contentY < originY){
    36             var dy = contentY - originY;
    37             if (dy < -10){
    38                 lv.headerItem.goState('ready');
    39                 needReflesh = true;
    40             }
    41             else {
    42                 if (pressed){
    43                     //console.log(pressed);
    44                     //needReflesh = false;   // 如何判断当前鼠标是否按下?如果是按下状态才能取消刷新
    45                     lv.headerItem.goState('');
    46                 }
    47             }
    48         }
    49         // 上拉加载判断逻辑:已经到底了,还上拉一定距离
    50         if (contentHeight>height && contentY-originY > contentHeight-height){
    51             var dy = (contentY-originY) - (contentHeight-height);
    52             //console.log("y: " + contentY + ", dy: " + dy);
    53             if (dy > 40){
    54                 needLoadMore = true;
    55                 //console.log("originY:" + originY + ", contentY:" + contentY + ", height:" + height + ", contentheight:" + contentHeight);
    56             }
    57         }
    58     }
    复制代码

     

    转载请注明出处:http://surfsky.cnblogs.com 

    展开全文
  • 【QT】QML模型与列表

    千次阅读 2014-12-02 14:41:01
    ListElement要定义在ListModel中,是模型列表中的元素,可以使用ListView或Repeater来访问。ListElement中的属性名是自定义的,首字母小写,属性值是个简单的常量。 ListModel是一个数据列表源,就像是ListElement的...

    ListElementListModel


    ListElement要定义在ListModel中,是模型列表中的元素,可以使用ListViewRepeater来访问。ListElement中的属性名是自定义的,首字母小写,属性值是个简单的常量。

    ListModel是一个数据列表源,就像是ListElement的容器一样,封装了若干ListElement,元素个数可以通过count属性获得,附加属性index保存了当前元素在列表中的下标,还有一些可以动态改变这些属性的方法,如append()insert()等,下面一一介绍。

    1、一个简单的例子

    import QtQuick 2.2
    
    Rectangle {
        id: home
        width: 360; height: 360
        color: "lightblue"
    
        Component.onCompleted: {
            console.log(fruitModel.count) // 3
        }
    
        ListModel {
            id: fruitModel
    
            ListElement {
                name: "Apple"
                colors: "red"
                cost: 6.45
            }
            ListElement {
                name: "Pear"
                colors: "yellow"
                cost: 4.25
            }
            ListElement {
                name: "Grape"
                colors: "purple"
                cost: 5.15
            }
        }
    
        Component {
            id: fruitDelegate
    
            Rectangle {
                width: home.width; height: 20
                color: colors
    
                Row {
                    Text { width: 100; text: name }
                    Text { text: "$" + cost }
                }
            }
        }
    
        ListView {
            anchors.fill: parent
            model: fruitModel
            delegate: fruitDelegate
        }
    }

    运行结果:




    上述例子中,ListModel包含了3ListElement,属性名分别是“name”、“colors”

    cost”ListViewdelegate将会访问model的数据。


    2ListElement可以有列表属性,给上述例子中的ListElement增加“attributes”列表属性,修改上述例子如下:

    import QtQuick 2.2
    
    Rectangle {
        id: home
        width: 360; height: 360
        color: "lightblue"
    
        Component.onCompleted: {
            console.log(fruitModel.count) // 3
        }
    
        ListModel {
            id: fruitModel
    
            ListElement {
                name: "Apple"
                colors: "red"
                cost: 6.45
                attributes: [
                    ListElement { description: "Core" },
                    ListElement { description: "Deciduous" }
                ]
            }
            ListElement {
                name: "Pear"
                colors: "yellow"
                cost: 4.25
                attributes: [
                    ListElement { description: "Citrus" }
                ]
            }
            ListElement {
                name: "Grape"
                colors: "purple"
                cost: 5.15
                attributes: [
                    ListElement { description: "Tropical" },
                    ListElement { description: "Seedless" }
                ]
            }
        }
    
        Component {
            id: fruitDelegate
            Rectangle {
                width: home.width; height: 40
                color: colors
                Text { id: nameField; width: 100; text: name }
                Text { text: '$' + cost; anchors.left: nameField.right }
                Row {
                    anchors.top: nameField.bottom
                    spacing: 10
                    Text { text: "Attributes:" }
                    Repeater {
                        model: attributes
                        Text { text: description }
                    }
                }
            }
        }
    
        ListView {
            anchors.fill: parent
            model: fruitModel
            delegate: fruitDelegate
        }
    }

    运行结果:




    例子中访问attributes列表属性用到了Repeater


    3、动态改变ListModel属性

    先来看看ListModel有哪些方法:

    append(jsobjectdict)

    clear()

    objectget(int index)

    insert(intindex, jsobject dict)

    move(intfrom, int to, int n)

    remove(intindex, int count)

    set(intindex, jsobject dict)

    setProperty(intindex, string property, variant value)

    sync()

    这些方法的用法基本相同,在第一个例子中的fruitDelegate下添加一个MouseArea,动态插入一个元素,修改后的代码如下:

        Component {
            id: fruitDelegate
    
            Rectangle {
                width: home.width; height: 20
                color: colors
    
                Row {
                    Text { width: 100; text: name }
                    Text { text: "$" + cost }
                }
    
                MouseArea {
                    anchors.fill: parent
                    onClicked: {
                        fruitModel.insert(index, {"cost": 9.89, "colors": "orange", "name": "Orange"})
                    }
                }
            }
        }

    这样,点击某个元素后,就会在这个元素前插入对象{"cost":9.89, "colors": "orange", "name":"Orange"}并显示出来,例如点击Pear元素,结果如下:



    其它方法用法类似。


    展开全文
  • QML 实现图片帧渐隐渐显轮播

    千次阅读 2017-09-10 19:53:38
    前言所谓图片帧渐隐渐显轮播就是,一组图片列表,当前图片逐渐改变透明度隐藏,同时下一张图片逐渐改变透明度显示,依次循环,达到渐隐渐显的效果,该效果常用于图片展示,相比左右自动切换的轮播方式来说,这种方式...
  • QML编写简单的图片查看器。一个典型的Qml小例子,希望对初学qml朋友有所帮助。
  • QT QML目录导航列表视图

    千次阅读 2016-11-30 17:16:25
    QML目录导航列表 7 /目录文件 8 /文件过滤 9 /递归 10 /事件 11 /高亮当前行 12 /当前选项 13 /目录切换动画 14 /限制根目录 15 16 usage: 17 FolderListView...
  • QML视图使用MVC模式构成Model View Delegate来显示中,同时系统也提供了三种视图方式:ListView列表视图、GridView网格视图和PathView路径视图。这三种视图都是继承自Flickable ,所以它们都有Flickable效果,同时...
  • 通过修改Image控件“source”属性,可以让Image控件显示不同的图片,“source”属性指定图片的全路径(图片路径及图片的名字),在C++代码中可以实现图片全路径的更换,通过QML和C++的交互,QML可以取得新的图片的...
  • qml实现消息图片展示

    2018-06-05 11:37:02
    本文主要介绍如何展示不同大小尺寸的图片,并加上边框。实现步骤如下。1、实现不同尺寸的图片的展示。主要运用OpacityMask实现圆角功能。Rectangle { width: image_area.paintedWidth height: image_area....
  • 最近,需要在QML上显示来自OPenCV的摄像头视频,因为是视频,即好多好多图片,所以需要QML上动态刷新来自C++的QImage。具体怎么搞我就不再赘述,虽然资料不多,但是CSDN上的一篇博客已经写得十分的清楚。该博客如下...
  • qt qml

    2019-08-29 10:18:04
    本文作为开发QT qml 技术总结和常用函数功能总结,不是很适合初学者。 初学者参考资源:https://pan.baidu.com/s/1rwOwKOMoON0ffGcSorndew 本人收集的资料仅供参考。 qml 基础 qml 和 quick支持基本类型 //Qml ...
  • //自定义圆形图片按钮 Rectangle { id:roundButton width: 30 height: width radius: width / 2 property url imageUrlHover: "" property url imageUrlNormal: "" // 图片路径 property color backco.
  • QML元素

    千次阅读 2012-08-30 14:09:30
    这是Qt Quick子部分的QML元素的功能分组列表. These are the functionally grouped lists of QML elements as part of Qt Quick. 声明元素时要带有名称和两个花括号.元素可能被嵌入到其他元素中,从而在两个元素间...
  • QML中的listview来实现树形二级列表(类似android ExpandableListView控件) 2.QML阴影字体 QML实现阴影字体效果,可定义阴影颜色及阴影大小等 3.QML-Light-Ani-font QML实现发光呼吸动画字体效果 4,QML渐变...
  • QML入门

    2019-11-28 20:38:47
    文章目录QMLQML是什么Qt QML是什么Qt Quick是什么Qt Quick CompilerQML engine是什么[Qt Quick] vs [Qt Quick 2]QML可否像动态语言一样运行时加载执行qbs是什么qmlscene是什么Qt Quick UI Forms(.ui.qml file) and ...
  • Qt炫酷图片预览(非QML)

    千次阅读 2018-10-24 15:29:46
    Qt炫酷图片预览(非QML) 文章目录Qt炫酷图片预览(非QML)功能预览图工程文件结尾 功能 自定义时间设置滚动图片 支持鼠标点击左右切换图片 自适应窗口大小 预览图 工程文件 Qt交流大会 853086607 免费群中 结尾...
  • qml 3

    2015-12-23 10:15:33
    C++程序中使用QML绑定机制 QML被定为一种可容易使用C++扩展,并可扩展C++的语言.使用Qt Declarative模块中的类可在C++中加载和操作QML中的组件,通过Qt的元对象系统,QML和C++对象可轻易的使用信号和槽机制进行通信....
  • QML简介

    千次阅读 2013-05-27 09:26:01
    QML与Qt程序 Qt Declarative UI运行环境 QML文档通过QML运行环境载入并运行. 包含Declarative UI引擎和内置的QML元素, 插件模块, 还提供了访问第三方的QML元素与模块. QML与Qt 单纯使用QML可以不...
  • QML是⼀种描述⽤户界⾯的声明式语⾔,Qt5中⼤量使⽤了这种声明⽤户界⾯的语⾔。它将⽤户界⾯分解成⼀些更⼩的元素,这些元素能够结合成⼀个组件。QML语⾔描述了⽤户界⾯元素的形状和⾏为。⽤户界⾯能够使⽤...
  • QML杂记

    千次阅读 2017-04-21 14:56:39
    Qt Quick本身主要包含了QML、JavaScript、 Qt C++三种技术 QML 是对 JavaScript 的一种扩展,是一种说明性语言,用来描述基于Qt 对象系统的用户界面。QML的主要作用我理解就是将界面设计与程序逻辑解耦,通常来说...
  • QML基础

    2013-05-27 02:17:00
    BASIC ...QWidgets were designed for a different type of user interface than QML, so it is not always a good idea to port a QWidget-based application to QML. QWidgets are a better choic...
  • nameFilters: ["*.qml","*.png"];//要展示的文件后缀 } delegate: Text { id:wrapper; text: fileName MouseArea { id:mos; enabled:fileIsDir; anchors.fill: parent; onClicked: { folderList....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,674
精华内容 669
关键字:

qml图片列表