gpt4 book ai didi

Qt Quick Controls 2 和 TableView

转载 作者:行者123 更新时间:2023-12-02 00:11:30 24 4
gpt4 key购买 nike

可以在 Quick Controls 2.0 应用程序中使用 TableView 吗?这将需要同时导入:

import QtQuick.Controls 1.4
import QtQuick.Controls 2.0

我会产生任何副作用吗?

另一个相关问题:TableView似乎属于Quick Controls 1.0集。是吗?这是否意味着如果可以使用 TableView,那么就可以在 Quick Controls 2.0 应用程序中使用所有 Quick Controls 1.0 控件?

最佳答案

虽然可以在同一应用程序中混合使用 Qt Quick Controls 1 和 2,但最大的问题是 Qt Quick Controls 1 与 Qt 的自动高 DPI 缩放不兼容,而 Qt Quick Controls 2 的可扩展性则基于此。因此,运行此类混合两者的应用程序可能无法在高 DPI 显示器上提供理想的结果。

鉴于 Qt Quick Controls 1 TableView 存在严重的性能问题,一种可能的替代方案是使用 Qt Quick 核心中的普通 ListViewRow作为代表。在 Qt 5.9 及更高版本中,可以显式指定内容宽度和滑动方向,以便垂直 ListView 也可以水平滑动。这是一个过于简单的多列列表示例,您已经可以使用最新的 Qt 5.9 beta 进行尝试:

import QtQuick 2.9
import QtQuick.Controls 2.2

ApplicationWindow {
id: window
width: 360
height: 360
visible: true

ListView {
id: listView
anchors.fill: parent

contentWidth: headerItem.width
flickableDirection: Flickable.HorizontalAndVerticalFlick

header: Row {
spacing: 1
function itemAt(index) { return repeater.itemAt(index) }
Repeater {
id: repeater
model: ["Quisque", "Posuere", "Curabitur", "Vehicula", "Proin"]
Label {
text: modelData
font.bold: true
font.pixelSize: 20
padding: 10
background: Rectangle { color: "silver" }
}
}
}

model: 100
delegate: Column {
id: delegate
property int row: index
Row {
spacing: 1
Repeater {
model: 5
ItemDelegate {
property int column: index
text: qsTr("%1x%2").arg(delegate.row).arg(column)
width: listView.headerItem.itemAt(column).width
}
}
}
Rectangle {
color: "silver"
width: parent.width
height: 1
}
}

ScrollIndicator.horizontal: ScrollIndicator { }
ScrollIndicator.vertical: ScrollIndicator { }
}
}

当然,这种简化的多列列表不提供诸如可移动和可调整大小的列之类的功能以及内置于旧的 TableView 类型中的其他花哨功能。另一方面,性能处于完全不同的水平,因此,如果您的目标不是在具有无限资源的计算机上运行的经典桌面环境,那么这条路线可能值得考虑。 ;)

关于Qt Quick Controls 2 和 TableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43423981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com