子窗口中的 ListView 触发立即关闭,或在滚动时触发

2024-04-09

我有一个相当奇怪的场景,如果我启动一个包含ListView如果有一个中等复杂的委托和足够的项目来轻松超出可见区域,整个子窗口将在启动时立即关闭。

降低委托的复杂性将允许窗口打开,但随后快速滚动窗口ListView会强行关闭它。

This SSCCE http://sscce.org/在我的笔记本电脑上触发效果,但在功能更强大的机器上,它可能只能在滚动时执行(或者委托可能需要更复杂):

import QtQuick 2.3
import QtQuick.Window 2.0

Window {
    width: 300
    height: 200

    Component.onCompleted: {
        win.createObject( null );
    }

    Component {
        id: win

        Window {
            width: 600
            height: 400

            visible: true

            ListView {
                id: view
                anchors.fill: parent

                model: 100

                boundsBehavior: Flickable.StopAtBounds
                clip: true

                delegate: Rectangle {
                    width: view.width
                    height: 24

                    property int debugLevel: index % 3
                    property int timestamp: index * 1000
                    property int message: index

                    color: "darkgray"

                    Row {
                        anchors.fill: parent

                        Repeater {
                            id: delegateRepeater

                            property list< QtObject > roleModel: [
                                QtObject {
                                    property string label: timestamp
                                    property int itemWidth: 100
                                },
                                QtObject {
                                    property string label: debugLevel
                                    property int itemWidth: 100
                                },
                                QtObject {
                                    property string label: message
                                    property int itemWidth: view.width - 100 - 100
                                }
                            ]

                            model: roleModel

                            Item {
                                width: itemWidth
                                anchors {
                                    top: parent.top
                                    bottom: parent.bottom
                                }

                                Text {
                                    anchors {
                                        fill: parent
                                        leftMargin: 4
                                    }

                                    verticalAlignment: Text.AlignVCenter

                                    text: label
                                    elide: Text.ElideRight
                                }

                                Rectangle {
                                    anchors {
                                        top: parent.top
                                        bottom: parent.bottom
                                        right: parent.right
                                    }

                                    width: 1

                                    visible: index != ( delegateRepeater.count - 1 )
                                    color: "white";
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

代码中似乎没有任何特定部分导致问题,删除any委托中对象的数量减少了子窗口关闭的可能性。

我添加了调试标签,因为我的主要问题是这个效果不产生调试输出。如果我在子窗口的销毁处理程序中添加一个断点(Component.onDestruction)然后有一个堆栈条目指向model: roleModel声明 - 但删除整个Repeater并用复制粘贴等效项替换会产生相同的结果减去堆栈条目。

因此,如果有人知道如何从这个纯 QML 示例中获取更多信息,我将不胜感激。


正如 @BaCaRoZzo 所指出的,通过修改委托代码来改变行为似乎是一个不相关的附带问题。

真正的原因是因为事实证明你无法创建新的根上下文 https://wiki.qt.io/Qt_project_org_faq#How_can_I_create_multiple_toplevel_windows_in_QML.3F(即顶级窗口)来自 QML。当 Qt Quick Components 发布时,暗示这个问题将得到解决,但是博客文章 http://blog.qt.digia.com/blog/2011/08/26/toplevel-windows-and-menus-with-qt-quick/夸耀Window没有明确说明这一点。创建一个新的Window并经过null为家长技术上有效,但结果似乎很不稳定。

值得庆幸的是,在我的情况下,我正在创建一个 QML/C++ 应用程序,因此我通过创建新的根上下文解决了这个问题Q_INVOKABLEC++ 方面的方法。但如果您正在开发纯 QML 应用程序,那么您似乎就不那么幸运了。

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

子窗口中的 ListView 触发立即关闭,或在滚动时触发 的相关文章

  • 如何在 C++ 运行时更改 QML 对象的属性?

    我想在运行时更改 QML 对象的文本 我尝试如下 但文本仍然为空 这是后端类 class BackEnd public QObject Q OBJECT Q PROPERTY QString userFieldText READ userF
  • 当我尝试构建 Qt 4.7.1 静态库时,“找不到 -ljscore”

    我尝试从最新的源构建静态 Qt 库 但出现以下错误 usr bin ld cannot find ljscore collect2 ld returned 1 exit status 如何解决这个问题呢 这是 Qt 构建系统中自 4 7 0
  • XcodeColors 在 XCode 5 中不起作用

    我尝试安装XcodeColors在 XCode 5 中 但不幸的是 它不能与我从 XCode 4 6 获得的旧插件一起使用 下一步 我检查了 github 网站 在那里我看到了以下拉取请求 提供了 XCode 5 的工作版本 https g
  • 调试 VS Code 主题时出现“您没有用于调试‘带有注释的 JSON’的扩展”警告

    我生成了在 VS Code 中创建颜色主题所需的文件 我这样做是用生成器代码 https www npmjs com package generator code节点包 我的文件结构如下 https i stack imgur com aH
  • 如何在托管应用程序的框架代码中调试 System.ExecutionEngineException

    我有一个作为服务运行的应用程序 该应用程序有时会崩溃 该应用程序是用 vb net 编写的 并在新线程 一次一个 上运行其任务 我已经收集了故障转储并开始分析 从应用程序创建的日志文件的分析 转储分析支持它 看来 当没有任务正在运行并且应用
  • Qt:将拖放委托给子级的最佳方式

    我在 QWidget 上使用拖放 我重新实现了 DragEnterEvent dragLeaveEvent dragMoveEvent 和 dropEvent 效果很好 在我的 QWidget 中 我有其他 QWidget 子级 我希望它们
  • 使用 Visual Studio Tools for Docker 部署和调试远程 Linux Docker 容器

    我试图弄清楚如何使用部署到远程容器适用于 Docker 的 Visual Studio 工具 并调试我的 ASP NET Core 应用程序 实际上 我正在以下场景中工作 我的开发机器是 Hyper V 虚拟机 Docker is inst
  • 无法在 Eclipse 中连接到虚拟机

    想要改进这篇文章吗 提供此问题的详细答案 包括引用和解释为什么你的答案是正确的 不够详细的答案可能会被编辑或删除 当我尝试在 Eclipse 上调试任何项目时 我突然开始遇到这个奇怪的错误 我不记得有什么改变让这个问题突然出现 Launch
  • Qt 创建者 + MITK (Linux)

    我正在尝试使用MITK 与 Qt Creator 我已经通过 ccmake 成功编译并使用了 VTK 和 ITK 我已经编译了 MITK超级建造模式 它下载 CTK VTK ITK 等 然后我就配置好了 我已经用 make 编译了 大约两个
  • Qt - 如何粘合两个窗口并将它们移动在一起?

    就像qmmp Qt 音乐播放器ui设计一样 这两个或三个窗口实际上在同一个窗口中 因为只有一个dock图标 并且这些窗口可以一起移动并相互附着 我看了源码 好像有用QDockWidget 但我真的不知道如何获得它的细节 当您手动移动辅助窗口
  • 如何在模型更改时停止ListView“跳跃”

    我需要做什么 我需要创建一个聊天窗口用一个ListView在 QML 中存储聊天消息 我设置listView positionViewAtEnd 以便跟踪最后的消息 我禁用positionViewAtEnd当我向上滚动时 我可以阅读过去的消
  • 如何使用 Qtimer 添加 1 秒延迟

    我目前有一个方法如下 void SomeMethod int a Delay for one sec timer gt start 1000 After one sec SomeOtherFunction a 这个方法实际上是一个附加到信号
  • 如何记录 ssh 调试信息?

    我需要将 ssh 调试信息的输出写入文件中 这 ssh v email protected cdn cgi l email protection gt result txt ssh v email protected cdn cgi l e
  • VS2010 RC - 调试器中只有 100 个 std::map 元素

    当我想查看 std map 容器的所有元素时 在 VS 2010 RC 中调试我的应用程序时遇到一个小问题 当调试器到达断点并且我想检查元素检查器中的映射值 在 本地 窗口中以及用鼠标悬停变量名称后的弹出窗口中 并且我正在向下滚动列表元素它
  • Chrome 开发工具:无需切换到“源”选项卡即可进入调试器

    如果我把debugger https developer mozilla org en US docs JavaScript Reference Statements debugger当 Chrome 开发工具打开时 我的 JavaScri
  • 如何在 Qt 中以编程方式制作一条水平线

    我想弄清楚如何在 Qt 中制作一条水平线 这很容易在设计器中创建 但我想以编程方式创建一个 我已经做了一些谷歌搜索并查看了 ui 文件中的 xml 但无法弄清楚任何内容 ui 文件中的 xml 如下所示
  • 在浏览器中查看 javascript 事件

    我正在使用火狐浏览器 有没有什么东西可以向我显示实时触发的所有 JavaScript 事件 您可以右键单击其中的元素Firebug http getfirebug com的 HTML 选项卡并单击日志事件 然后 您将在 控制台 选项卡中看到
  • 与 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
  • 直接在 ARM 目标上调试单声道应用程序

    我最近在 BeagleBone 嵌入式 ARM 设备上安装了 Mono 希望通过 USB 连接 Kinnect 传感器并使用 C Mono 控制它 我想知道 Mono 我正在使用 MonoDevelop 但我想这个问题也适用于 VS 是否允

随机推荐

  • 如何使用 WSGI 实现 Flask 应用程序按路径调度?

    我想使用单个域作为多个 Flask 应用程序的暂存环境 这些应用程序最终将在自己的域上运行 就像是 example staging com app1 example staging com app2 example staging com
  • 如何创建表格颤动?

    我有三个列表 我必须生成表格 这些来自用户输入的列表 px 0 1 0 2 0 3 x 0 1 2 这个第三个列表是第一个第二个列表的乘法 Mutiply 0 0 2 0 6 我想生成表格 列表的长度来自用户输入所以 我如何生成表 简单的方
  • Logback-android:日志未写入文件

    尝试使用 logback android 重定向日志消息 以便可以将消息保存在文件中 但是 它没有保存到文件中 这是我的 logback xml 文件配置 它存储在src 主要 资产在我的 Android Studio 中
  • java 的 == 行为不一致

    考虑这段代码 class test public static void main String args test inst test new test int i1 2000 int i2 2000 int i3 2 int i4 2
  • 我无法删除我的 VPC

    我想删除我的一个 VPC 但当我尝试删除时 出现此错误 我们无法删除以下 VPC vpc 8737bde2 10 100 0 0 16 Khoi VPC vpc vpc 8737bde2 具有依赖关系 无法删除 服务 AmazonEC2 状
  • 日期时间比较忽略种类?

    DateTime d1 new DateTime 2015 1 1 0 0 0 DateTimeKind Utc DateTime d2 new DateTime 2015 1 1 0 0 0 DateTimeKind Local Cons
  • SqlException 因为子查询返回超过 1 个值

    我有以下 LINQ 查询 用于构造一个结构以填充到 JavaScript 网格库中 这与本示例无关 但我想我仍然会解释这一点 var output myObjects Select p gt new RowModel ID p LeadUI
  • React hook 渲染额外的时间

    我的代码导致了意外数量的重新渲染 function App const isOn setIsOn useState false const timer setTimer useState 0 console log re rendered
  • (递归)SQL 查询而不是循环

    我正在寻找一个查询来获取以下输出 Id Number 1 241100 2 241110 2 241111 2 241112 2 241113 2 241114 2 241115 表结构 Id Number From To 1 241100
  • 如何在闪亮的应用程序中获取父 URL

    我在我的网站中嵌入了带有 iframe 的 Shiny 应用程序 现在我正在尝试保护我的 Shiny 应用程序 我希望只能在我的网站中访问 iframe 而不是直接通过其 URL 访问 为此 我尝试获取包含我的 Shiny 应用程序内的 i
  • 为什么 fetch 返回承诺待处理?

    我正在使用 fetch 来获取数据 但它始终返回待处理的承诺 我看过很多关于这个问题的帖子 并尝试了所有的可能性 但没有解决我的问题 我想知道为什么 fetch 返回待定状态的承诺 简而言之 fetch 返回待定状态的可能情况是什么 我的一
  • Python - pandas - 将系列附加到空白数据帧中

    假设我有两个 python 中的 pandas 系列 import pandas as pd h pd Series g 4 2 1 1 g pd Series 1 6 5 4 abc 我可以仅使用 h 创建一个 DataFrame 然后将
  • 如何在redis中创建自己的数据库?

    There are 0 to 15 databases in redis 我想使用 redis cli 创建自己的数据库 有什么命令可以实现吗 Redis 数据库并不等同于 MySQL 等 DBMS 中的数据库名称 这是一种为键创建隔离和命
  • SQL Server 中的 Json 转义 unicode

    我得到了带有转义 unicode 符号的 Json 字符串 u041e u043f u043e u0440 u0430 u0448 u0430 u0440 u043e u0432 u0430 u044f VW GOLF 我知道后面的4位数字
  • 在sql server中使用货币$格式?

    我在 mysql 数据库中有数据 例如645 000我需要将其格式化以包含货币符号 例如 645 000 我怎样才能在 SQL 中实现这一点 您不需要也不应该在 SQL Server 中对其进行格式化 相反 您的应用程序需要针对 UI 对其
  • 滚动列表视图导致按钮不可见

    我有一个列表视图 其中列表的每一行都包含一个按钮 基于一个字段 我想让这个按钮不可见 我的适配器内的 getView 方法如下所示 public View getView int position View convertView View
  • 线程“main”中的异常 java.lang.NoClassDefFoundError: org/sqlite/NativeDB

    我正在尝试在 mac 上运行 sqlite 的一个简单示例 我非常确定该代码在 Windows 上运行良好 但在 Mac 上不行 如果有人能帮助我解决这个问题 我真的很感激 代码在 Eclipse 中运行 我在项目中添加了 sqlite j
  • git:将文件从另一个分支签出到当前分支(不要将 HEAD 切换到另一个分支)

    我想将另一个分支中存在的文件的不同版本加载到当前分支中 git help checkout says DESCRIPTION Updates files in the working tree to match the version in
  • UpdatePanel 中的 ASP.NET FileUpload - 仍然无法正常工作

    尝试在 NET 4 5 C Web 应用程序的 updatepanel 中使用 FileUpload 或 AsyncFileUpload 控件 我尝试在母版页中使用标准 Scriptmanager 或 ToolKitScriptManage
  • 子窗口中的 ListView 触发立即关闭,或在滚动时触发

    我有一个相当奇怪的场景 如果我启动一个包含ListView如果有一个中等复杂的委托和足够的项目来轻松超出可见区域 整个子窗口将在启动时立即关闭 降低委托的复杂性将允许窗口打开 但随后快速滚动窗口ListView会强行关闭它 This SSC