婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 使用qt quick-ListView仿微信好友列表和聊天列表的示例代碼

使用qt quick-ListView仿微信好友列表和聊天列表的示例代碼

熱門標簽:商家地圖標注海報 ai電銷機器人的優勢 海外網吧地圖標注注冊 聊城語音外呼系統 打電話機器人營銷 南陽打電話機器人 孝感營銷電話機器人效果怎么樣 地圖標注自己和別人標注區別 騰訊地圖標注沒法顯示

1.視圖模型介紹

在Qml中、常見的View視圖有:

  • ListView: 列表視圖,視圖中數據來自ListModel、XmlListModel或c++中繼承自QAbstractItemModel或QAbstractListModel的自定義模型類
  • TableView: 和excel類似的視圖
  • GridView: 網格視圖,類似于home菜單那樣,排列著一個個app小圖標
  • PathView: 路徑視圖,可以根據用戶自定義的path路徑來顯示不一樣的視圖效果
  • SwipeView: 滑動視圖,使用一組頁面填充。每次只顯示一個頁面。用戶可以通過橫向滑動在頁面之間導航,一般會將它與PageIndicator結合使用

本章首先來學習ListView.以微信好友列表為例:

里面的每個好友就是由一個個 item 組成的,存在視圖中的model里,然后寫一個delegate組件,即可通過ListView顯示出來.

由于時間不是很多,所以本章實現的微信好友列表和聊天列表(v1版本)是通過模擬數據實現的,等后面有時間后,再來實現個一個真正的內網聊天工具.

2.demo實現(支持自適應)

好友列表如下圖所示:

聊天列表如下圖所示:

整個效果如下所示:

覺得GIF模糊的話,可以轉彎去bilibilihttps://www.bilibili.com/video/BV1Z64y1R7kL/

由于代碼上傳CSDN,會導致有些同學可能沒積分無法下載,所以已經上傳群里了.

如果下載后學習有收獲,一定要來這里給我點個贊呀,都沒動力更新文章了,贊的人太少了

3.重要組件-實現氣泡組件源碼

import QtQuick 2.0
import "BubbleNormal.js" as BubbleNormal
import "BubbleBlue.js" as BubbleBlue
import "BubbleBlack.js" as BubbleBlack


Item {
    id: container
    property var bubbleIndex: 0
    property string msgText: ""
    property bool isSend: true
    property int iconHeight: 40
    property int maxWidth: 100

    Canvas {
        id: canvas
        anchors.fill: parent

        onPaint: {
            bubble().drawBubble(getContext('2d'));
        }
    }

    Text {
        id: text
        text: msgText
        font.pixelSize: 17
        font.family: "Microsoft Yahei"
        wrapMode: Text.WrapAnywhere

        horizontalAlignment:  Text.AlignLeft
        verticalAlignment: Text.AlignVCenter
        anchors.fill: parent
    }

    Component.onCompleted: {
        bubble().initText();
        bubble().reUpdateSize();
        canvas.requestPaint();
    }

    onBubbleIndexChanged: {
        bubble().initText();
        bubble().reUpdateSize();
        canvas.requestPaint();
    }
    function bubble() {
        switch (bubbleIndex) {
            case 0 :  return BubbleNormal
            case 1 :  return BubbleBlue
            case 2 :  return BubbleBlack
            default: return BubbleNormal
        }
    }

}

代碼如上所示,只要用戶更改了bubbleIndex值,那么我們就會去馬上調用替換后對應的氣泡js文件的function(),進行初始化消息、重繪氣泡背景。這個組件實現后,我們如果想實現其它的氣泡,也可以直接往里加就好了

4.重要組件-實現聊天列表委托源碼

/****************************************************************************
**  聊天列表委托
** Author   : 諾謙 https://www.cnblogs.com/lifexy/
** Create   : 2021-6-12
****************************************************************************/

import QtQuick 2.12
import QtGraphicalEffects 1.12
import "./bubble" as Bubble
import "qrc:/Common.js" as Common

Item {
    id: container
    property var headSrc
    property var myHeadSrc : "qrc:/head/myhead.jpg"
    property var bubbleIndex : 0

    height: _layout.height + 10
    width: ListView.view.width
    state: msgType
    states: [
        State {
              name: "hint"
              AnchorChanges { target: _layout;
                  anchors.horizontalCenter: container.horizontalCenter;
                  anchors.verticalCenter: container.verticalCenter; }
        },
        State {
              name: "hintDate"
              AnchorChanges { target: _layout;
                  anchors.horizontalCenter: container.horizontalCenter;
                  anchors.verticalCenter: container.verticalCenter; }
        },
        State {
              name: "recv"
              AnchorChanges { target: _layout;
                  anchors.left: container.left;
                  anchors.verticalCenter: container.verticalCenter; }
        },
        State {
              name: "send"
              AnchorChanges { target: _layout;
                  anchors.right: container.right;
                  anchors.verticalCenter: container.verticalCenter; }
        }
    ]

    Row {
        id: _layout
        anchors.leftMargin: 20
        anchors.rightMargin: 20
        spacing: 4
        layoutDirection : msgType == "send" ? Qt.RightToLeft : Qt.LeftToRight
        HeadImage {
            id: _head
            width : 50
            height : 50
            headUrl: msgType == "recv" ? headSrc : myHeadSrc
            visible: msgType == "recv" || msgType == "send"
        }

        Text {
            id: _hint
            visible: msgType == "hintDate" || msgType == "hint"
            text: msgType == "hintDate" ? getChatDate() : msg
            color: "#B0B0B0"
            font.pixelSize: 14
            font.family: "Microsoft Yahei"
            wrapMode: Text.WrapAnywhere
            elide: Text.ElideRight
            width: container.width - 40
            height: 30
            horizontalAlignment: Text.AlignHCenter
            verticalAlignment: Text.AlignVCenter
        }

        Bubble.ChatBubble {
            id: _msg
            visible: msgType == "recv" || msgType == "send"
            msgText:  msgType == "recv" || msgType == "send" ?  msg : ""
            isSend: msgType == "send" ? true : false
            iconHeight: _head.height
            maxWidth: container.width - _layout.anchors.leftMargin * 2 - _head.width * 2 - _layout.spacing * 2
            bubbleIndex: container.bubbleIndex
        }
    }


    // 判斷消息時間,與當前時間間隔多久,來動態顯示
    function getChatDate () {
        var total = new Date() - date;
        if (total  (1000*60*60*24)) {
            return date.toLocaleTimeString(Qt.locale(), "hh:mm");
        } else if (total  (1000*60*60*24) * 2) {
            return "昨天 "+date.toLocaleTimeString(Qt.locale(), "hh:mm");
        } else if (total  (1000*60*60*24) * 3) {
            return "前天 "+date.toLocaleTimeString(Qt.locale(), "hh:mm");
        } else {
            return date.toLocaleString(Qt.locale(), "yyyy年M月d日 hh:mm");
        }
    } 
}

代碼如上所示,我們會去判斷消息類型:

  • 如果消息類型是"hint"類型,就直接居中顯示。
  • 如果消息類型是"hintDate"類型,則調用getChatDate()來動態獲取要如何顯示時間.
  • 如果消息類型是"recv"類型,則靠左顯示對方頭像,并加上氣泡消息
  • 如果消息類型是"send"類型,則靠又顯示自己頭像,并加上氣泡消息

以上就是qt quick-ListView高仿微信好友列表和聊天列表的詳細內容,更多關于qt 微信好友列表和聊天列表的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • Qt實現網絡聊天室的示例代碼

標簽:牡丹江 揚州 迪慶 撫州 南寧 六盤水 楊凌 聊城

巨人網絡通訊聲明:本文標題《使用qt quick-ListView仿微信好友列表和聊天列表的示例代碼》,本文關鍵詞  使用,quick-ListView,仿微,信,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《使用qt quick-ListView仿微信好友列表和聊天列表的示例代碼》相關的同類信息!
  • 本頁收集關于使用qt quick-ListView仿微信好友列表和聊天列表的示例代碼的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩激情视频在线观看| 日本视频一区二区| 亚洲午夜久久久久久久久电影网| 婷婷六月综合亚洲| 成人午夜电影小说| 欧美精品久久一区二区三区| 欧美色图免费看| 国产欧美精品在线观看| 日韩电影在线免费观看| 99国内精品久久| 2023国产精品| 狠狠狠色丁香婷婷综合久久五月| 欧美精品99久久久**| 亚洲精品成人悠悠色影视| 粉嫩av亚洲一区二区图片| 精品国产1区二区| 久久99国产乱子伦精品免费| 日韩一区二区三区免费观看| 国产亚洲精品aa| 免费精品视频在线| 欧美一区日韩一区| 视频一区国产视频| 精品污污网站免费看| 亚洲激情综合网| 一本色道综合亚洲| 亚洲精品免费一二三区| 日本乱人伦aⅴ精品| 中文字幕乱码久久午夜不卡| 国产精品456| 国产精品视频线看| 国产超碰在线一区| 中文文精品字幕一区二区| 国产福利91精品一区| 国产夜色精品一区二区av| 国产iv一区二区三区| 中文字幕制服丝袜成人av| jlzzjlzz亚洲女人18| 夜夜亚洲天天久久| 91精品国产综合久久精品性色 | 欧美tickling挠脚心丨vk| 首页亚洲欧美制服丝腿| 99精品国产视频| 亚洲一级片在线观看| 精品久久久网站| a在线播放不卡| 一本大道av伊人久久综合| 日韩成人dvd| 亚洲无人区一区| 中文字幕一区二区三区不卡在线| 久久久欧美精品sm网站| 精品国产免费人成电影在线观看四季| 色偷偷久久人人79超碰人人澡| 国产精品自在在线| 韩国欧美国产一区| 久国产精品韩国三级视频| 理论片日本一区| 日韩电影一区二区三区四区| 天天色图综合网| 婷婷夜色潮精品综合在线| 午夜伦欧美伦电影理论片| 亚洲精品第一国产综合野| 一区二区三区 在线观看视频| 中文字幕一区不卡| 日韩美女啊v在线免费观看| 中文字幕在线观看不卡| 国产精品美女视频| 成人免费视频在线观看| 亚洲欧美国产毛片在线| 一区二区三区四区在线| 亚洲精品成a人| 亚洲午夜精品网| 亚洲一区成人在线| 蜜臀av亚洲一区中文字幕| 日本美女一区二区三区视频| 黄色小说综合网站| 成人激情小说乱人伦| 91亚洲大成网污www| 欧美日韩综合在线| 日韩免费观看2025年上映的电影| 久久久综合视频| 亚洲三级小视频| 日日摸夜夜添夜夜添精品视频| 美女一区二区视频| 成人av电影免费在线播放| 91国产免费看| 日韩一区二区三区视频| 国产精品久线观看视频| 亚洲一区av在线| 精品系列免费在线观看| av一区二区三区黑人| 欧美日韩视频第一区| 久久久久久久久久久久久久久99 | 日本麻豆一区二区三区视频| 精品无人码麻豆乱码1区2区| 高清久久久久久| 欧美日韩免费高清一区色橹橹 | 中文字幕亚洲欧美在线不卡| 一区二区三区高清不卡| 精品一区二区在线视频| 色综合久久久久久久久| 日韩午夜在线观看视频| 亚洲免费av网站| 理论片日本一区| 欧美探花视频资源| 欧美国产在线观看| 麻豆精品视频在线观看| 91丨九色丨黑人外教| 久久综合一区二区| 亚洲图片欧美色图| www.综合网.com| 久久午夜电影网| 日韩精品电影一区亚洲| 在线观看91精品国产入口| 久久色视频免费观看| 日产国产欧美视频一区精品| 欧洲一区在线电影| 亚洲同性gay激情无套| 狠狠久久亚洲欧美| 日韩欧美在线网站| 五月天丁香久久| 欧美三级在线看| 亚洲综合久久av| 一本久道久久综合中文字幕| 亚洲欧美在线aaa| 高清国产午夜精品久久久久久| 欧美电影免费观看高清完整版在线观看| 亚洲精品国产精品乱码不99| 91免费视频网址| 国产精品国产自产拍在线| 久久精品av麻豆的观看方式| 91精品国产综合久久久久久久 | 欧美日韩在线亚洲一区蜜芽| 国产女人aaa级久久久级| 韩国中文字幕2020精品| 欧美不卡一区二区| 日本aⅴ精品一区二区三区| 精品久久99ma| 亚洲一区二区三区爽爽爽爽爽| 91老师片黄在线观看| 亚洲精品视频观看| 欧洲另类一二三四区| 自拍偷自拍亚洲精品播放| www.色综合.com| 亚洲主播在线观看| 538prom精品视频线放| 免费成人结看片| wwwwww.欧美系列| 成人免费视频视频在线观看免费 | 免费人成黄页网站在线一区二区| av一区二区三区| 亚洲五码中文字幕| 日韩精品一区二区三区四区视频| 国产揄拍国内精品对白| 中文字幕第一区二区| 91国产精品成人| 久久99久久久久| 日韩欧美第一区| 色综合天天综合| 一区二区免费视频| 欧美一卡二卡三卡| 成人激情午夜影院| 午夜精品久久久久久不卡8050| 欧美精品一级二级三级| 国产精品亚洲人在线观看| 亚洲女同ⅹxx女同tv| 欧美电影免费观看高清完整版 | 风间由美性色一区二区三区| 欧美国产一区在线| 欧美日韩中文另类| 成人午夜视频在线| 午夜天堂影视香蕉久久| 国产免费久久精品| 91精品婷婷国产综合久久性色 | 亚洲妇熟xx妇色黄| 国产亚洲婷婷免费| 91精品国产综合久久久蜜臀图片 | 免费成人美女在线观看| 国产亚洲精久久久久久| 欧美撒尿777hd撒尿| 国产一区二区网址| 午夜视频一区二区| 久久久久免费观看| 欧美丰满嫩嫩电影| 色综合天天综合网国产成人综合天 | 欧美国产欧美综合| 666欧美在线视频| av在线综合网| 国产精品影视天天线| 香蕉久久夜色精品国产使用方法 | 在线视频中文字幕一区二区| 极品美女销魂一区二区三区 | 91在线观看地址| 国产激情视频一区二区在线观看 | 夜夜嗨av一区二区三区中文字幕| 久久综合九色综合欧美就去吻 | 久久综合久久久久88| 欧美日韩精品系列| 国产一区二区三区黄视频| 国产精品久久久久久久久晋中| 欧美日韩一级二级|