当 Repeater 的委托高度发生变化时调整 ColumnLayout

2024-04-05

我已经设置了一个名为测试1.qml包含以下内容:

import QtQuick 2.6
import QtQuick.Layouts 1.3

Rectangle {
    width: 800; height: 1000;

    ColumnLayout {
        anchors.centerIn: parent

        // Header goes here

        Repeater {
            model: 3
            delegate: MyRectangle {
                width: 150
                height: width
                color: "#44ff0000"
            }
        }

        // Footer goes here

    }
}

我还设置了一个名为测试2.qml定义如下:

import QtQuick 2.6
import QtQuick.Layouts 1.3

Rectangle {
    width: 800; height: 1000;

    ColumnLayout {
        anchors.centerIn: parent

        // Header goes here

        Repeater {
            model: 3
            delegate: Column {
                MyRectangle {
                    width: 150
                    height: width
                    color: "#44ff0000"
                }
            }
        }

        // Footer goes here

    }
}

最后,我的矩形.qml有以下内容:

import QtQuick 2.6

Rectangle {
    MouseArea {
        anchors.fill: parent
        onClicked: {
            parent.height += 50
        }
    }
}

我的目标是当实例我的矩形单击后,它们的高度会发生变化,并且列布局应放大以使项目保持间距。

当我跑步时test.qml,结果不是我所期望的,因为我的矩形单击时彼此重叠。然而,测试2.qml给出了所需的行为,以及实例我的矩形保持它们的间距列布局放大。

应 derM 的要求,我认为下面的 GIF 可能有助于更清楚地解释这一点。

的(不良)行为测试1.qml:

(期望的)行为测试2.qml:

为什么我必须将对象包裹在一个Column达到想要的结果?


原因可能听起来很奇怪:

The [...]Layout-家人不仅可以安排物品,还可以调整它们的大小。您不应该在其中设置或更改尺寸。

为了完成它的工作,当您不使用可用的附加属性来设置尺寸时,它将使用implicitWidth/Height你的Items.

如果您尚未设置隐式尺寸,则在将新项目添加到布局中时,它们的隐式尺寸将设置为等于其设置的尺寸。但这不是绑定!因此,如果您现在更新height, the implicitHeight将保持原始大小,因此布局不会对更改做出反应。

如果您添加Column对于您的代表来说,事情发生了变化:Column更新其implicitHeight根据其子项的边界矩形。如果您现在调整大小Rectangles 的高度,Column将适应implicitHeightLayout将对变化做出反应。

现在您有以下解决方案:

  1. Use the Layout附加属性,用于设置和更改尺寸提示。
  2. 使用代表implicitHeight而不是height。但这在语义上可能是错误的。
  3. 不要使用ColumnLayout但只是常规的Column当您不需要额外的布局功能(附加属性和调整项目大小等)时,您的问题似乎就是这种情况。

Column {
    anchors.centerIn: parent
    spacing: 5

    // Header goes here

    Repeater {
        model: 3
        delegate:
            Rectangle {
                width: 150
                height: width
                color: "#44ff0000"
                MouseArea {
                    anchors.fill: parent
                    onClicked: {
                        console.log(parent.implicitHeight)
                        parent.height += 50
                    }
                }

        }
    }
    // Footer goes here

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当 Repeater 的委托高度发生变化时调整 ColumnLayout 的相关文章

  • PyQt:如何设置组合框项目可检查?

    为了将 GUI 小部件数量保持在最低限度 我需要找到一种方法来为用户提供下拉菜单项的选择 这些菜单项可用于过滤掉 listWidget 项中显示的内容 假设 listWidget 列出了 5 个不同类别的项目 Cat A Cat B Cat
  • 加权 Voronoi 的 CGAL 2D APOLLONIUS 图 - 如何生成和获取面和顶点?

    我正在尝试根据阿波罗尼乌斯图生成加权沃罗诺伊 我正在使用 CGAL 库 我找不到如何从 apollonius 获取面和顶点的好例子 我有以下类型定义 typedef double NT typedef CGAL Cartesian lt N
  • 为 Windows 98 编译 Qt

    我需要支持 Windows 98 Qt 文档声称这是可能的 但没有说明 Qt 4 6 的分布式二进制文件不能在 Win98 上运行 而且我采样的大多数 Qt 应用程序也不能在 Win98 上运行 对于几个确实在 98 上运行的应用程序 我询
  • QCombobox 向下箭头图像

    如何更改Qcombobox向下箭头图像 现在我正在使用这个 QSS 代码 但这不起作用 我无法删除向下箭头边框 QComboBox border 0px QComboBox down arrow border 0px background
  • 更改 Qt OpenGL 窗口示例以使用 OpenGL 3.3

    我正在尝试更改 Qt OpenGL 示例以使用更现代的 opengl 版本 330 似乎合适 所以我做了 在 main cpp 上设置版本和配置文件 设置着色器版本 更改着色器以使用统一 它现在构建没有任何错误 但我只看到一个空白窗口 我错
  • 与 Qt 项目的静态链接

    我有一个在 Visual Studio 2010 Professional 中构建的 Qt 项目 但是 当我运行它 在调试或发布模式下 时 它会要求一些 Qt dll 如果我提供 dll 并将它们放入 System32 中 它就可以工作 但
  • 如何在 QTabWidget Qt 中展开选项卡

    我有一个QTabWidget像这个 但我想展开选项卡以 填充 整个小部件宽度 如下所示 我怎样才能做到这一点 我在用Qt 5 3 2 and Qt 创建者 3 2 1 Update 我尝试使用setExpanding功能 ui gt myT
  • 如何使QTableView类的restoreState()和saveState()正常工作?

    首先 我想说 我的问题已经在这里讨论过 并且这里是 https stackoverflow com questions 1163030 qt qtableview and horizontalheader restorestate 但答案并
  • Qt:测量事件处理时间

    我想测量我的应用程序中的哪些事件在主线程中需要很长时间才能执行 阻塞 GUI 或者至少是否有任何事件花费的时间超过 比如说 10 毫秒 显然 我对需要很长时间的任务使用线程和并发 但有时很难在其他线程中放入的内容和可以保留在 GUI 中的内
  • 在 MacOS 终端上运行 ffmpeg [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我对 MacOS 相当陌生 我发现使用终端来获取信息并不容易ffmpeg和我在 Window 上一样正常运行 我有 ffmpeg 二进制文件ffmpe
  • 将 gnuplot 嵌入现有 QtWidget 中

    我正在用 C 创建一个 伪 实时绘图应用程序 使用 gnuplot 作为绘图后端 我的要求之一是绘图必须位于现有窗口内 而不是有一个单独的绘图窗口 gnuplot 默认为 Gnuplot 有一个选项可以指定 Qt 小部件 ID 这似乎适合我
  • Qt:在多个布局中使用一个小部件

    我有一个 QTabBar 所有选项卡都应该有相同的小部件 layout1 gt addWidget w layout2 gt addWidget w 然而打电话addWidget第二次导致该小部件在第一个布局中消失 有没有办法使用一个小部件
  • Qt - 无法让 lambda 工作[重复]

    这个问题在这里已经有答案了 我有以下功能 我想在其中修剪我的std set
  • 如何检测QTableView中的双击

    我正在使用 PyQt 创建 GUI 应用程序 在继承自 QTableView 的视图中 需要检测用户双击行时选择的行 该表可以排序 但不能编辑 我该怎么做 注意 尝试了 doubleClicked int 信号 它是由鼠标按钮发出的 而不是
  • 同时从多个流中捕获、最佳方法以及如何减少 CPU 使用率

    我目前正在编写一个应用程序 该应用程序将捕获大量 RTSP 流 在我的例子中为 12 个 并将其显示在 QT 小部件上 当我超过大约 6 7 个流时 问题就会出现 CPU 使用率激增并且出现明显的卡顿 我认为它不是 QT 绘制函数的原因是因
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table
  • 如何为 Windows 构建静态 Qt 库并将其与 Qt Creator 一起使用

    我已经下载了以下 Qt 源 http download qt nokia com qt source qt everywhere opensource src 4 7 3 zip http download qt nokia com qt
  • 是否可以在 Qt Creator 中将 Qt 样式表与升级的小部件一起使用?

    我正在尝试使用 Qt 样式表对标准小部件进行一些重大的重新设计 因此 在为不同的小部件手动完成大部分工作之后 objectName选择器 我决定以某种方式对类似的小部件进行分组 例如我有多个QFrames其作用类似于内部表单中的标题 我希望
  • Qt GUI 应用程序中的控制台输出?

    我有一个在 Windows 上运行的 Qt GUI 应用程序 它允许传递命令行选项 在某些情况下我想向控制台输出一条消息 然后退出 例如 int main int argc char argv QApplication a argc arg
  • 在 Qthread 中运行函数 - 应用程序将挂起

    我在 QT 内部线程方面遇到一些问题 include

随机推荐

  • django admin 中的通用多对多关系

    我在 Django 中有几个类似的模型 class Material models Model title models CharField max length 255 class Meta abstract True class New
  • C语言中如何判断数组中某个元素是否为空?

    在 C 中如何检查数组中的元素是否为空 if array i NULL 似乎不起作用 你是什 么意思empty 当执行 C 程序时 未显式初始化的变量会获得不可预测的值 您需要将所有数组单元格设置为 NULL 或设置为 0 或设置为程序逻辑
  • 从 Java 调用 PHP 方法 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我需要从 java 调用 PHP 方
  • 当 Activity 不在前面时,暂停 Android 中的 CountDownTimer

    我有一个使用从 10 开始倒数的 CountDownTimer 的活动 当该活动不再处于焦点时 例如用户接到电话或其他情况 如何暂停该计时器 然后在用户返回时恢复计时器活动 这可能吗 我会向 onTick 处理程序添加一些内容 以保存类中计
  • 删除 Torch 张量中的行

    我有一个火炬张量如下 a tensor 0 2215 0 5859 0 4782 0 7411 0 3078 0 3854 0 3981 0 5200 0 1363 0 4060 0 2030 0 4940 0 1640 0 6025 0
  • 编写替换背景图像的用户脚本

    这是代码 UserScript name Wood Background namespace http www nationstates net nation ellorn description Changes background to
  • 无法使用参数列表在 Swift 2 中调用“sendAsynchronousRequest”

    我目前正在重写部分 Swift 1 2 代码以与 Swift 2 0 兼容 实际上我无法弄清楚对 sendAsynchronousRequest 进行了哪些更改 目前我的所有请求都失败了 NSURLConnection sendAsynch
  • 使用 FFmpeg 创建静音视频和黑屏视频

    我正在尝试使用 FFmpeg 从本地 mp4 文件生成以下内容 原始视频的副本 无音频 原始视频的副本 带有音频但没有视觉效果 而是黑屏 该文件还需要是 mp4 格式 阅读完文档后 我正在努力使终端命令正确 要删除音频 我尝试了此命令但没有
  • SupportMapFragment 与 MapFragment 性能对比

    之间有什么区别吗支持MapFragment http developer android com reference com google android gms maps SupportMapFragment html and 地图片段
  • 确定应用程序是 WinForms 还是 WebForms

    有没有办法在运行时确定运行的应用程序是WinForms还是Web Edit 如果我同时引用两者 实际上是否有问题System Web and System Windows Forms在我的班级图书馆里 概括 迄今为止 到目前为止我学到了什么
  • C# 中的计时器初始化和竞争条件?

    我在里希特的书中看到了这段代码 下面的代码演示了如何进行线程池线程调用 该方法立即启动 然后每 2 秒启动一次 1 internal static class TimerDemo 2 3 private static Timer s tim
  • 是否可以根据模板类型参数的嵌套 typedef 的存在来专门化模板定义?

    我有一个模板 template
  • 不相关的锁定语句之后的读指令是否可以移到锁定之前?

    这个问题是评论的后续this https stackoverflow com questions 40979715 do semaphores prevent instruction reordering thread 假设我们有以下代码
  • 多线程编程中什么是公平性?

    什么是线程公平性或并发 多线程编程中的公平性 我用谷歌搜索过 有很多关于多线程的信息 但不完全是关于公平性的 有人可以解释一下吗 非常欢迎举一个例子 公平性基本上类似于不同线程能够advance无论他们在做什么 100 公平意味着 所有线程
  • 应用 API 响应转换的最佳位置 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在异步操作创建器中 我从服务器获取数据 对于我的用例来说 数据的格式不太好 我需要对其进行转换以在 UI 中使用它 问题 我应该 在数据到达后立
  • MKOverlayRenderer 在地图视图上显示 UIImage

    我正在尝试在 iOS 7 中的地图视图上显示图像 我将 MKOverlayRenderer 子类化如下 MapOverlayRenderer h import
  • Room 未向表中插入数据

    有趣的是 它有时会正确执行插入操作 我不知道为什么以及如何会发生这种情况 所以 我无法弄清楚我在哪里犯了错误 这是我的项目文件 1 SentFilesDao java Dao public interface SentFilesDao Qu
  • 在 VSCode 中通过缩进更改纯文本颜色

    我有兴趣在 VSCode 中进行讲座并在简单的文本文件中做笔记 因为我已经使用它进行编码 然而 对于我的一生 我无法弄清楚如何更改简单的文本颜色 我想要的是在一种缩进深度处具有一种文本颜色 例如 Notes a b Notes会是不同的颜色
  • 删除字符串中空格的最快方法

    我试图从数据库表中的字符串中获取由 分隔的多个电子邮件地址 但它也返回了空格 我想快速删除空格 以下代码确实删除了空格 但每当我尝试在字符串中获取大量电子邮件地址 例如 30000 然后尝试删除它们之间的空格时 它也会变得很慢 删除这些空格
  • 当 Repeater 的委托高度发生变化时调整 ColumnLayout

    我已经设置了一个名为测试1 qml包含以下内容 import QtQuick 2 6 import QtQuick Layouts 1 3 Rectangle width 800 height 1000 ColumnLayout ancho