- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个模型,它由具有某些属性的对象组成,例如:
ListModel {
id: fruitModel
ListElement {
name: "Apple"
color: "green"
cost: 2.45
}
ListElement {
name: "Orange"
color: "orange"
cost: 3.25
}
ListElement {
name: "Banana"
color: "yellow"
cost: 1.95
}
}
现在我想使用 GridLayout
显示这个模型。对于每个属性,我想在 GridLayout
中使用一个元素,例如:
GridLayout {
columns: 3
Text { text: "Apple" }
Rectangle { color: "green" }
SpinBox { value: 2.45 }
Text { text: "Orange" }
Rectangle { color: "orange" }
SpinBox { value: 3.25 }
Text { text: "Banana" }
Rectangle { color: "yellow" }
SpinBox { value: 1.95 }
}
关键是我可以轻松更改 GridLayout
的 columns
属性并使我的布局更窄(例如,以适应小屏幕)。我可以使用 Repeater 来填充 GridLayout
。然而,这种方法将以错误的顺序填充我的 GridLayout
:
GridLayout {
columns: 3
Repeater {
model: fruitModel
Text { text: name }
}
Repeater {
model: fruitModel
Rectangle { color: color }
}
Repeater {
model: fruitModel
SpinBox { value: value }
}
}
并且使用 Layout.column
和 Layout.row
附加属性是一种浪费,因为我想轻松更改 GridLayout
中的列数.
有没有办法用模型中的数据逐行填充GridLayout
?
UPD1:
我想要得到的行为:
GridLayout {
columns: parent.width > 235 ? 3 : 1
Text { text: "Apple" }
Rectangle { color: "green"; width: 40; height: 40 }
SpinBox { value: 2 }
Text { text: "Orange" }
Rectangle { color: "orange"; width: 40; height: 40 }
SpinBox { value: 3 }
Text { text: "Banana" }
Rectangle { color: "yellow"; width: 40; height: 40 }
SpinBox { value: 1 }
}
UPD2:来自@m7913d 的修改变体:
GridLayout {
id: layout
property int maxColumns: 3
columns: parent.width > 235 ? maxColumns : 1
Repeater {
model: fruitModel
Text {
text: name
Layout.row: layout.columns == maxColumns ? index : (maxColumns * index)
Layout.column: 0
}
}
Repeater {
model: fruitModel
Rectangle {
Layout.preferredWidth: 30
Layout.preferredHeight: 30
color: col
Layout.row: layout.columns == maxColumns ? index : (maxColumns * index + 1)
Layout.column: layout.columns == maxColumns ? 1 : 0
}
}
Repeater {
model: fruitModel
SpinBox {
value: val
Layout.row: layout.columns == maxColumns ? index : (maxColumns * index + 2)
Layout.column: layout.columns == maxColumns ? 2 : 0
}
}
}
它的工作但不容易修改的解决方案加上有时在布局调整大小时有消息 QGridLayoutEngine::addItem: Cell (1, 0) already taken
。
最佳答案
我会使用由 Row
或 Column
(或任何其他安排)填充的 Column
作为委托(delegate)。
Column {
id: rootCol
anchors.fill: parent
Repeater {
model: fruitModel
delegate: rootCol.width > 300 ? rowDel : colDel
}
Component {
id: rowDel
Row {
Text { width: 100; height: 50; text: model.name }
Rectangle { width: 50; height: 50; color: model.color }
SpinBox { width: 150; height: 50; value: model.cost }
}
}
Component {
id: colDel
Column {
Text { width: 100; height: 50; text: model.name }
Rectangle { width: 50; height: 50; color: model.color }
SpinBox { width: 150; height: 50; value: model.cost}
}
}
}
或者也许:
Column {
id: rootCol
anchors.fill: parent
Repeater {
model: fruitModel
delegate: Flow {
anchors {
left: parent.left
right: parent.right
}
Text { width: 100; height: 50; text: model.name }
Rectangle { width: 50; height: 50; color: model.color }
SpinBox { width: 150; height: 50; value: model.value }
}
}
}
关于qt - 列数可变的 QML Repeater 和 QML Grid Layout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47638503/
您如何计算Oracle表中的列数? 最佳答案 SELECT count(*) FROM user_tab_columns WHERE table_name = 'FOO' 应该给你foo中的列数。您可
我有一个宽度为 100% 的 div,里面有大约 10 张图片,所有图片的宽度和大小都不同。我希望能够无缝地将这些图像彼此 float ,我已经做到了,但它们不会在屏幕上拉伸(stretch),它们都
请看下面的代码,表格应该根据下面selected id选项中选择的输入更改行数,但只读取select id的第一个值,行数不会根据选择,你能指出我代码中的错误吗? http://jsfiddle.ne
我需要一个可以在 3×3 和 4×4 之间切换的动态 gridlayout。我可以 setRowCount 和 setColumnCount 从 3 到4 但不是从 4 到 3。它会显示以下问题: C
这里有一个没有真正答案的类似问题:CSS columns bug — 5 column count only showing 4 (with images) 我正在使用 column-count 来显
我正在尝试找到一种方法来填充摊销时间表,如下所示。 我目前使用的公式是: =IF($B2=$1:$1,$A2/$C2," ") 但是,这仅填充了第一个点(“起点”),我想做的是根据摊销期抵消这一点。期
我运行以下代码: import cv2 import numpy as np img_file='pokemon.jpg' img=cv2.imread(img_file) # print tota
我正在使用 asp.net 和 vb。这里我将数据绑定(bind)到Gridview。该数据集有 5 条记录,3 列,并且 gridview 显示 5 条记录,3 列。但 Gridview.colum
我已经为我的数据库苦苦挣扎了一段时间,几乎不可能找到我的老师。我的代码如下: INSERT INTO `database28`.`activity` VALUES ("Stefan", 1.1.2.2
我有一个执行 SQL 命令的 python 脚本,并尝试将所有数据插入表中。问题是我有一个条目列表,例如: "Bob", "bob@gmail.com" "John", "john@gmail.com
有谁知道这是否可以通过 bootstrap mixins 来完成。 列(父级数) 像什么Neat有。 在 Neat the Columns 中,mixins 的工作方式如下 @mixin span-c
我有这样的网址:http://xn----7sbabhi8cwaajmue5o.xn--p1ai/cars/search/by_man_and_model?by_manufacturer=115 你可
使用 Bootstrap 3,我正在寻找一种网格布局,其中列宽在任何屏幕分辨率下都是固定的(比如 200 像素),但它们的数量取决于屏幕宽度。 换句话说,我知道列的宽度,但我不知道每行有多少列,因为这
public class SmallestColumn2{ public static void main(String[] args){ int [][] smallest
如果我只有 9 列,但我想将它们分散到 100% 的 div。如何做到这一点? NSW VIC QLD WA SA TAS ACT N
我想在这里更改列的顺序: #container { position: relative; width: 600px; } #column-wrapper { -webkit-
1、df=DataFrame([{‘A':'11','B':'12'},{‘A':'111','B':'121'},{‘A':'1111','B':'1211'}])
我想将csv文件形式的数据导入表中。[使用Oracle SQL Developer]。我有数百个文件,每个文件有大约50列。 从SQL * Loader Wiki(http://www.orafaq.
好吧,这对我来说似乎很基础,尽管我找不到任何关于如何实现它的信息。 假设我有某种 QGridLayout 包含相同大小的小部件。现在我想根据布局大小更新其行数/列数。 因此,例如在相对较宽的屏幕上它看
我在 https://cwiki.apache.org/confluence/display/Hive/Home 中找不到任何记录在案的限制。 我的猜测是行数或列数没有限制。文件大小受文件系统限制。通
我是一名优秀的程序员,十分优秀!