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

网站建设案例收费情况百度浏览器网址链接

网站建设案例收费情况,百度浏览器网址链接,wordpress迁移数据库,wordpress 文章 url目录 引言相关阅读项目结构示例一: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/234576.html

相关文章:

  • 竞赛网站开发网站设计公司排行
  • 南京浦口做网站点google seo 优化
  • 做网站合肥营销策划书范文1000字
  • 没有做icp备案的网站百度上怎么发布信息啊
  • 如何做网站demo西安网站建设平台
  • wordpress导航位置seo最新快速排名
  • 二次元WordPressseo外链工具有用吗
  • 网站建设的背景有哪些百度一下首页网址百度
  • 富阳建设局网站seo网站推广助理招聘
  • 梁志天设计公司考题百度免费优化
  • 惠东网站建设抖音搜索排名
  • 网站建设费税收分类seo优化是怎么优化的
  • 做网站的框架模版购买网站域名
  • 成立学校网站建设小组阿里大数据分析平台
  • wordpress会员下载插件如何进行关键词优化工作
  • 成都市锦江区网站建设百度ai营销中国行
  • 深圳靠谱网站建设公司查权重
  • 零基础学建网站微指数官网
  • 武汉微信网站建设如何快速推广
  • vs2015网站开发基础样式百度seo收录
  • 专业做灯具的网站宁波seo网站服务
  • 西安有专业制作网站的公司吗公司推广文案
  • 网站开发部署长春网络营销公司
  • 阿里去可以做几个网站8大营销工具指的是哪些
  • 东莞网站排名优化公司网站设计公司上海
  • 用wordpress 扒站优化关键词首页排行榜
  • 郑州app开发网站建设网络销售面试问题有哪些
  • 网站下面的公安备案怎么做win7优化大师免安装版
  • 百度推广联盟林云seo博客
  • 北京网站建设企业网站制作微营销推广平台有哪些