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

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

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

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

先給大家展示下效果圖:


【功能】

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

【調(diào)用】

控件使用非常簡單,只要實現(xiàn) onLoad 和 onLoadMore 事件即可,其他的和標準的ListView差不多。

/**
新聞示例
下拉刷新
上拉分頁
滾動軸
頂部工具欄
頂部工具欄自動吸附
當(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})
}
}

【核心代碼】

實在太長了,截取ContentY處理部分,其他的下載了看吧

//-------------------------------------
// 下拉刷新和上拉分頁邏輯
//-------------------------------------
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ū)自動顯隱(拖動過小隱藏頭部,反之顯示)
if (snapHeader){
if (contentY >= -h1/3 && contentY < 0)
moveToFirst();
if (contentY >= -h1 && contentY < -h1/3)
moveToHeader();
}
// 刷新區(qū)自動顯隱
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)前鼠標是否按下?如果是按下狀態(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 列表視圖控件(下拉刷新、上拉分頁、滾動軸),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 一文徹底了解Android中的線程和線程池

    一文徹底了解Android中的線程和線程池

    眾所周知線程池能很高地提升程序的性能,下面這篇文章主要給大家介紹了關(guān)于Android中線程和線程池的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • 解析Android應(yīng)用程序運行機制

    解析Android應(yīng)用程序運行機制

    這篇文章主要介紹了Android應(yīng)用程序運行機制,有需要的朋友可以參考一下
    2014-01-01
  • Android  TimerTask 的簡單應(yīng)用及注意事項

    Android TimerTask 的簡單應(yīng)用及注意事項

    這篇文章主要介紹了Android TimerTask 的簡單應(yīng)用及注意事項的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Android如何實現(xiàn)設(shè)備的異顯功能詳解

    Android如何實現(xiàn)設(shè)備的異顯功能詳解

    這篇文章主要給大家介紹了關(guān)于Android如何實現(xiàn)設(shè)備的異顯功能的相關(guān)資料,這篇文章通過示例代碼介紹的非常詳細,對各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-02-02
  • Flutter Future異步操作詳細講解

    Flutter Future異步操作詳細講解

    這篇文章主要介紹了Flutter Future異步操作,future是Future類的對象,其表示一個T類型的異步操作結(jié)果。如果異步操作不需要結(jié)果,則future的類型可為Future
    2023-03-03
  • Android使用Opengl錄像時添加水印

    Android使用Opengl錄像時添加水印

    這篇文章主要為大家詳細介紹了Android使用Opengl錄像時添加水印,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • 深入探討Android中跨應(yīng)用數(shù)據(jù)共享的權(quán)限管理

    深入探討Android中跨應(yīng)用數(shù)據(jù)共享的權(quán)限管理

    本文將和大家深入探討Android跨應(yīng)用數(shù)據(jù)共享的安全機制,結(jié)合完整Kotlin代碼實現(xiàn),覆蓋ContentProvider、FileProvider等核心技術(shù)的權(quán)限控制策略,并附贈最佳實踐和性能優(yōu)化技巧
    2025-06-06
  • Android實現(xiàn)淘寶倒計時功能

    Android實現(xiàn)淘寶倒計時功能

    這篇文章主要為大家詳細介紹了Android實現(xiàn)淘寶倒計時,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • 非常實用的小功能 Android應(yīng)用版本的更新實例

    非常實用的小功能 Android應(yīng)用版本的更新實例

    這篇文章主要為大家詳細介紹了一個非常實用的小功能,Android應(yīng)用版本的更新實例,感興趣的小伙伴們可以參考一下
    2016-08-08
  • 利用Flutter輕松制作紅包界面

    利用Flutter輕松制作紅包界面

    這篇文章主要為大家詳細介紹了如何利用Flutter實現(xiàn)輕松制作一個紅包界面,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以了解一下
    2022-11-11

最新評論

文登市| 鹰潭市| 涞水县| 高平市| 逊克县| 邵东县| 安康市| 桃园市| 营口市| 江都市| 峨眉山市| 准格尔旗| 湾仔区| 木里| 九台市| 定陶县| 册亨县| 邳州市| 体育| 长子县| 新津县| 台中市| 沂南县| 南川市| 新建县| 易门县| 宁河县| 武夷山市| 民丰县| 克山县| 龙陵县| 定日县| 阿克陶县| 凌云县| 自治县| 西乡县| 尼勒克县| 武安市| 丰顺县| 拉萨市| 湘西|