当前位置: 首页 > wzjs >正文

申请域名网站价格北京厦门网站优化

申请域名网站价格,北京厦门网站优化,哪家网络公司做网站好,呼叫中心系统电话目录 引言相关阅读项目结构示例一:ListView样式定制代码解析运行效果 示例二:ListView数据交互代码解析运行效果 总结 引言 在现代应用程序开发中,列表视图是最常见且实用的UI组件之一。Qt Quick(QML)提供了强大的Lis…

目录

    • 引言
    • 相关阅读
    • 项目结构
    • 示例一:ListView样式定制
      • 代码解析
      • 运行效果
    • 示例二:ListView数据交互
      • 代码解析
      • 运行效果
    • 总结

引言

在现代应用程序开发中,列表视图是最常见且实用的UI组件之一。Qt Quick(QML)提供了强大的ListView组件,它不仅可以高效地展示大量数据,还能通过自定义实现丰富的交互效果。本文将以一个简单的QML ListView项目为例,展示如何打造既美观又实用的列表视图,包括样式定制和数据交互两个实例。

相关阅读

在深入了解本项目之前,建议先了解以下QML相关资源:

  • ListView组件官方文档

项目结构

以下是本项目的结构图:

qml_listview项目
CMakeLists.txt
main.cpp
ListViewStyle.qml
ListViewInteraction.qml
resource.qrc
images文件夹
avatar1.png
avatar2.png
avatar3.png

项目说明:

  • CMakeLists.txt:CMake构建配置文件
  • main.cpp:C++入口文件,负责启动QML应用
  • ListViewStyle.qml:样式定制的示例QML文件
  • ListViewInteraction.qml:数据交互的示例QML文件
  • resource.qrc:Qt资源文件,用于管理项目资源
  • images/:存放项目中使用的图片资源

示例一:ListView样式定制

在这个示例中创建了一个联系人列表,展示了如何自定义ListView的各个部分,包括header、delegate和section。

代码解析

import QtQuick
import QtQuick.ControlsWindow {width: 400height: 600visible: truetitle: "ListView 样式定制示例"// 定义数据模型ListModel {id: contactModelListElement { name: "张三"; avatar: "qrc:/images/avatar1.png"; status: "在线" }ListElement { name: "李四"; avatar: ""; status: "在线" }ListElement { name: "王五"; avatar: ""; status: "在线" }ListElement { name: "菜狗"; avatar: "qrc:/images/avatar2.png"; status: "离线" }ListElement { name: "老六"; avatar: "qrc:/images/avatar3.png"; status: "忙碌" }}

首先定义了应用窗口和数据模型。ListModel包含联系人的名称、头像路径和状态信息。

    ListView {anchors.fill: parentmodel: contactModelspacing: 2clip: true// 自定义headerheader: Rectangle {width: parent.widthheight: 50color: "#2D82B5"Text {anchors.centerIn: parenttext: "联系人列表"font.pixelSize: 20color: "white"}}

ListView组件使用contactModel作为数据源,并通过header属性自定义了一个蓝色标题栏。

        // 自定义delegatedelegate: Rectangle {width: parent.widthheight: 80color: ListView.isCurrentItem ? "#BCE6FF" : "white"border.width: 0MouseArea {anchors.fill: parentonClicked: parent.ListView.view.currentIndex = index}Row {anchors.fill: parentanchors.margins: 10spacing: 10// 头像区域Item {width: 60height: 60// 图片头像Image {id: avatarImageanchors.fill: parentsource: avatarvisible: status === Image.ReadyfillMode: Image.PreserveAspectCropRectangle {anchors.fill: parentcolor: "#999999A0"  // 半透明灰色visible: model.status === "离线"}}// 文字头像(当图片加载失败时显示)Rectangle {visible: avatarImage.status !== Image.Readyanchors.fill: parentradius: 30color: "#E0E0E0"Text {anchors.centerIn: parenttext: name[0]font.pixelSize: 24}}}

delegate部分定义了列表项的显示方式。然后为每个联系人显示头像(如果有)或首字母头像(如果头像加载失败)。当点击列表项时,该项会被设置为当前项并改变背景色。对于离线状态的联系人,头像上会显示一层半透明灰色蒙版。

                Column {anchors.verticalCenter: parent.verticalCenterspacing: 5Text {text: namefont.pixelSize: 16font.bold: true}Text {text: statuscolor: {if (status === "在线") return "#4CAF50"if (status === "离线") return "#9E9E9E"return "#F44336"}}}}}

联系人信息部分使用Column布局显示姓名和状态,并根据状态值动态设置颜色:在线为绿色,离线为灰色,忙碌为红色。

        // 自定义sectionsection.property: "status"section.delegate: Rectangle {width: parent.widthheight: 30color: "#F5F5F5"Text {anchors.verticalCenter: parent.verticalCenteranchors.left: parent.leftanchors.leftMargin: 10text: sectionfont.bold: truecolor: "#2D82B5"}}}
} 

最后,使用section功能按联系人状态对列表进行分组,每个分组都有一个淡灰色背景的标题栏显示状态名称。

运行效果

样式定制


示例二:ListView数据交互

第二个示例展示了如何实现与ListView的数据交互,包括添加和删除列表项。

代码解析

import QtQuick
import QtQuick.Controls
import QtQuick.LayoutsWindow {width: 400height: 600visible: truetitle: "ListView 数据交互示例"// 定义数据模型ListModel {id: fruitModelListElement { name: "苹果"; price: "5.0" }ListElement { name: "香蕉"; price: "3.5" }ListElement { name: "橙子"; price: "4.0" }}

这个示例中,我们创建了一个水果列表,包含水果名称和价格信息。

    ColumnLayout {anchors.fill: parentspacing: 10// 添加新水果的输入区域RowLayout {Layout.margins: 10TextField {id: nameInputplaceholderText: "水果名称"Layout.fillWidth: true}TextField {id: priceInputplaceholderText: "价格"Layout.fillWidth: true}Button {text: "添加"onClicked: {if (nameInput.text && priceInput.text) {fruitModel.append({"name": nameInput.text, "price": priceInput.text})nameInput.text = ""priceInput.text = ""}}}}

界面顶部有两个输入框和一个"添加"按钮,用于添加新的水果项。通过调用fruitModel.append()方法,我们可以将新项添加到模型中,ListView会自动更新显示。

        // ListView显示区域ListView {id: listViewLayout.fillWidth: trueLayout.fillHeight: truemodel: fruitModeldelegate: ItemDelegate {width: listView.widthcontentItem: RowLayout {Text { text: name; Layout.fillWidth: true }Text { text: price + "元" }Button {text: "删除"onClicked: fruitModel.remove(index)}}}}}
}

ListView的delegate使用了ItemDelegate和RowLayout来布局每个水果项,显示名称和价格,并添加了一个"删除"按钮。点击删除按钮时,调用fruitModel.remove(index)方法删除相应的项。

运行效果

数据交互


总结

本文通过两个实例展示了QML ListView的强大功能:

  1. 样式定制示例:展示了如何自定义ListView的外观,包括头部、列表项和分组,创建具有吸引力的用户界面。
  2. 数据交互示例:展示了如何通过简单的界面操作实现对ListView数据的添加和删除。

QML强大的声明式语法和丰富的组件库使得创建复杂而美观的列表界面变得简单高效。通过合理利用ListView的各种属性和功能,我们可以构建出既美观又实用的列表视图,满足各种应用场景的需求。

项目代码已上传至Gitcode,您可以通过以下链接获取完整代码:
GitCode QML ListView示例

GitCode - QML - ListView 示例

http://www.dtcms.com/wzjs/66371.html

相关文章:

  • 网站如何做整合营销软文推广案例500字
  • 青岛网站建设迅优服装品牌策划及营销推广方案
  • 广州美容网站建设怎么创建自己的网站
  • 建设公司网站的细节江阴百度推广公司
  • 网站后台管理系统 源码河北优化seo
  • 成都有做网站的公司吗博为峰软件测试培训学费
  • vue适合什么样的网站开发北京优化互联网公司
  • 北京专业网站的建设新闻发布会
  • 淘宝网页版电脑版百度站长工具seo
  • app下载导航seo研究中心vip课程
  • 日本的网页建设网站网络搜索引擎
  • 杭州下沙网站建设如何设计推广方案
  • 浙江信息港seo是啥意思
  • 灰色 网站网络营销策划案范本
  • 外贸独立站怎么搭建数据分析一般用什么软件
  • 深圳网站制作公司专业网站今日军事新闻视频
  • 政府门户网站集约化建设的探索软文推广服务
  • 大岭山网站建设公司注册推广赚钱一个80元
  • 郑州网站设计 郑州网站开发卖链接的网站
  • 网站建设首选易网宣百度推广按效果付费是多少钱
  • 唐山建网站互联网推广引流
  • 二级域名网站建设直通车关键词怎么选 选几个
  • 海兴县做网站谷歌搜索引擎入口2021
  • 自己做网站和凡科的区别互联网推广是什么工作内容
  • 企业官方网站怎么做网站域名注册查询
  • 建设青岛公司网站抖音seo优化软件
  • 云图书馆平台网站建设潍坊seo关键词排名
  • 资产负债表在哪个网站可以做淘宝直通车推广怎么做
  • 找项目网站优化大师兑换码
  • 网站怎么做劫持seo服务是什么