最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Qt qml中l(wèi)istview 列表視圖控件(下拉刷新、上拉分頁(yè)、滾動(dòng)軸)

 更新時(shí)間:2016年07月08日 12:00:32   作者:surfsky  
這篇文章主要介紹了Qt qml中l(wèi)istview 列表視圖控件(下拉刷新、上拉分頁(yè)、滾動(dòng)軸) 的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下

Qt qml listview下拉刷新和上拉分頁(yè)主要根據(jù)contentY來(lái)判斷。但要加上頂部下拉指示器、滾動(dòng)條,并封裝成可簡(jiǎn)單調(diào)用的組件,著實(shí)花了我不少精力:)

先給大家展示下效果圖:


【功能】

下拉刷新和上拉分頁(yè)邏輯
/下拉刷新
/上拉更多
/滾動(dòng)欄
/工具欄半拉顯隱
Author: surfsky.cnblogs.com
Lisence: MIT 請(qǐng)保留此文檔聲明
History:
init. surfsky.cnblogs.com, 2015-01
add initPosition property. 2015-01

【調(diào)用】

控件使用非常簡(jiǎn)單,只要實(shí)現(xiàn) onLoad 和 onLoadMore 事件即可,其他的和標(biāo)準(zhǔn)的ListView差不多。

/**
新聞示例
下拉刷新
上拉分頁(yè)
滾動(dòng)軸
頂部工具欄
頂部工具欄自動(dòng)吸附
當(dāng)前行高亮
Author: surfsky.cnblogs.com 2015-01
*/
ListViewEx{
id: view
width: 500
height: 800
pageSize: 50
snapHeader: true
initPosition: 'header'
// 頂部新聞圖片欄
headerComponent: Component{
PageView{
id: pv
width: view.width
height: 100
clip: true
Rectangle{width:pv.width; height:pv.height; color: 'green'}
Rectangle{width:pv.width; height:pv.height; color: 'yellow'}
Rectangle{width:pv.width; height:pv.height; color: 'blue'}
}
}
// 行UI代理
delegate: Text {
id: wrapper;
width: parent.width;
height: 32;
font.pointSize: 15;
verticalAlignment: Text.AlignVCenter;
horizontalAlignment: Text.AlignHCenter;
text: content;
//color: ListView.view.currentIndex == index ? "white" : "#505050";
MouseArea {
anchors.fill: parent;
onClicked: wrapper.ListView.view.currentIndex = index;
}
}
//-----------------------------------------
// 數(shù)據(jù)加載事件
//-----------------------------------------
onLoad:{
for (var i = 0 ; i < pageSize ; ++i)
model.append({"index": i, "content": "Item " + i})
}
onLoadMore:{
for (var i = pageSize*page ; i < pageSize*(page+1); ++i)
model.append({"index": i, "content": "Item " + i})
}
}

【核心代碼】

實(shí)在太長(zhǎng)了,截取ContentY處理部分,其他的下載了看吧

//-------------------------------------
// 下拉刷新和上拉分頁(yè)邏輯
//-------------------------------------
onMovementEnded: {
//console.log("movementEnded: originY:" + originY + ", contentY:" + contentY + ", reflesh:" + needReflesh + ", more:" + needLoadMore);
// 刷新數(shù)據(jù)
if (needReflesh){
lv.headerItem.goState('load');
model.reflesh();
needReflesh = false;
}
// 加載新數(shù)據(jù)
else if (needLoadMore){
model.loadMore();
needLoadMore = false;
}
else {
var h1 = lv.headerItem.loader.height;
var h2 = lv.headerItem.indicator.height;
// 頭部區(qū)自動(dòng)顯隱(拖動(dòng)過(guò)小隱藏頭部,反之顯示)
if (snapHeader){
if (contentY >= -h1/3 && contentY < 0)
moveToFirst();
if (contentY >= -h1 && contentY < -h1/3)
moveToHeader();
}
// 刷新區(qū)自動(dòng)顯隱
if (contentY >=-(h1+h2) && contentY < -h1)
moveToHeader();
}
}
onContentYChanged: {
// 下拉刷新判斷邏輯:已經(jīng)到頭了,還下拉一定距離
if (contentY < originY){
var dy = contentY - originY;
if (dy < -10){
lv.headerItem.goState('ready');
needReflesh = true;
}
else {
if (pressed){
//console.log(pressed);
//needReflesh = false; // 如何判斷當(dāng)前鼠標(biāo)是否按下?如果是按下?tīng)顟B(tài)才能取消刷新
lv.headerItem.goState('');
}
}
}
// 上拉加載判斷邏輯:已經(jīng)到底了,還上拉一定距離
if (contentHeight>height && contentY-originY > contentHeight-height){
var dy = (contentY-originY) - (contentHeight-height);
//console.log("y: " + contentY + ", dy: " + dy);
if (dy > 40){
needLoadMore = true;
//console.log("originY:" + originY + ", contentY:" + contentY + ", height:" + height + ", contentheight:" + contentHeight);
}
}
}

以上所述是小編給大家介紹的Qt qml中l(wèi)istview 列表視圖控件(下拉刷新、上拉分頁(yè)、滾動(dòng)軸),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評(píng)論

于都县| 铜鼓县| 鄂托克前旗| 东阿县| 海盐县| 屯门区| 左贡县| 镇平县| 正定县| 靖州| 仙桃市| 锦屏县| 龙陵县| 白山市| 葫芦岛市| 灵山县| 平罗县| 仪陇县| 定日县| 曲阜市| 枣庄市| 康马县| 叙永县| 武穴市| 漳州市| 六盘水市| 洪湖市| 长武县| 崇信县| 基隆市| 喜德县| 岢岚县| 淮滨县| 收藏| 大安市| 土默特左旗| 乐至县| 新泰市| 漳州市| 日照市| 南乐县|