qml TableView详解

1、概述

TableView是Qt Quick Controls 2中的一个组件,它提供了一个强大的表格视图,用于在QML应用程序中显示二维数据。TableView支持自定义列宽、行高、单元格样式以及数据模型,使得开发者能够轻松地创建复杂的数据表格。通过TableView,用户可以浏览、编辑和筛选数据,提高应用程序的交互性和用户体验。

2、重要属性
  • columnSpacing: 指定列之间的间距。
  • columnWidthProvider: 一个函数,用于动态计算每列的宽度。
  • contentHeight: 表格内容的高度(只读)。
  • contentWidth: 表格内容的宽度(只读)。
  • delegate: 用于渲染每个单元格的委托项。
  • model: 设置TableView使用的数据模型。
  • reuseItems: 指定是否重用单元格项以提高性能。
  • rowHeightProvider: 一个函数,用于动态计算每行的高度。
  • rowSpacing: 指定行之间的间距。
  • syncDirection: 指定同步滚动的方向。
  • syncView: 指定要与当前TableView同步滚动的视图(通常为另一个TableView或兼容的视图类型)。
  • view: 在委托项或其他子组件中,此附加属性可用于引用包含它们的TableView实例。

3、重要方法
  • forceLayout(): 强制TableView重新布局。当数据模型或列配置发生变化时,可能需要调用此方法。

4、重要信号
  • pooled():当一个项目(单元格)被添加到重用池之后,此信号被发出。重用池是一个存储不再显示但仍可用于表示其他数据的项目的集合。此信号仅在 reuseItems 属性为 true 时发出。如果 reuseItems 为 false,则项目不会被添加到重用池,因此也不会发出此信号。

  • reused():当一个项目从重用池中取出并被放置在内容视图中时,此信号被发出。此时,项目的模型属性(如 indexrow 和 column)已被更新以反映其新的位置或数据。此信号仅在 reuseItems 属性为 true 时发出。如果 reuseItems 为 false,则项目不会被重用,因此也不会发出此信号。

ApplicationWindow {
    id: root
    width: 640
    height: 480
    visible: true

    ListModel {
        id: libraryModel
        ListElement {
            title: "A Masterpiece"
            author: "Gabriel"
        }
        ListElement {
            title: "Brilliance"
            author: "Jens"
        }
        ListElement {
            title: "Outstanding"
            author: "Frederik"
        }
    }



    TableView {
        anchors.fill: parent
        TableViewColumn {
            role: "title"
            title: "Title"
            width: 100
        }
        TableViewColumn {
            role: "author"
            title: "Author"
            width: 200
        }
        model: libraryModel
    }
}

觉得有帮助的话,打赏一下呗。。

           

需要商务合作(定制程序)的欢迎私信!! 

QML中,要实现TableView的水平滑动,可以使用ScrollView来包裹TableView,并设置水平滚动条的属性。下面是一个示例代码: ``` import QtQuick 2.6 import QtQuick.Window 2.2 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 import QtQuick.Layouts 1.12 Window { id: window visible: true width: 600 height: 480 title: qsTr("QML自定义组件") ScrollView { id: scrollView anchors.fill: parent ScrollBar.horizontal.policy: ScrollBar.AlwaysOn TableView { id: phoneTable width: scrollView.width height: scrollView.height TableViewColumn { role: "name" title: "Name" width: 100 elideMode: Text.ElideRight } TableViewColumn { role: "cost" title: "Cost" width: 100 } TableViewColumn { role: "manufacturer" title: "Manufacturer" width: 140 } model: ListModel { id: phoneModel ListElement { name: "iphone 5" cost: "4900" manufacturer: "Apple" } ListElement { name: "iphone 8" cost: "4900" manufacturer: "Apple" } ListElement { name: "iphone 6" cost: "4900" manufacturer: "Apple" } ListElement { name: "iphone 7" cost: "4900" manufacturer: "Apple" } } focus: true } } } ``` 在这个示例中,我们将TableView放在了ScrollView中,并设置了水平滚动条的属性为AlwaysOn,这样就可以实现水平滑动了。 #### 引用[.reference_title] - *1* [QML TableView 使用详解](https://blog.csdn.net/u013873761/article/details/125064741)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [QML学习十七:TableView的简单使用](https://blog.csdn.net/weixin_38807927/article/details/125348247)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值