子窗口中的 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 触发立即关闭,或在滚动时触发 的相关文章

  • 如何在Qt 5中的paintEvent上使用mouseMoveEvent?

    我是 Qt 和 c 的新手 所以我遇到了一些困难 我正在尝试创建一个小部件 它可以获取 mouseMoveEvent 位置并在鼠标位置的像素图上绘制椭圆 下面你可以看到代码 include myimage h include
  • 调试 Julia v.0.6

    我克隆了一个存储库 https github com XiaojingGeorgeZhang OBCA tree master AutonomousParking在 Julia 0 5 和 0 6 中进行了测试 我之前使用的是最新的 Jul
  • Qt 5.15 mingw 文件夹 bin 中缺少调试 dll *d.dll

    我通过 Qt 维护工具安装了 Qt Creator 和 Qt5 15 但我在 mingw 的 bin 文件夹中缺少像 QtCored dll 这样的调试 dll 我该怎么办 None
  • Qt 嵌入式触摸屏 QMouseEvents 在收到 MouseButtonRelease 之前未收到

    我在带有触摸屏的小型 ARM 嵌入式 Linux 设备上使用 Qt 4 8 3 我的触摸屏配置了 tslib 并对其进行了校准 因此 etc 中有一个 pointcal 文件 我的触摸事件的位置工作得很好 但无论如何我都会在鼠标按下或鼠标释
  • Qt:不完整类型和前向声明的使用无效

    我有一些误解 A h ifndef A H define A H include B h class A public B Q OBJECT public A endif A cpp include A h A A B ui gt blan
  • PyQt4 QPalette 不工作

    btn QtGui QPushButton Button self palettes btn palette palettes setColor btn backgroundRole QtCore Qt green btn setPalet
  • 如何doxygen注释Qt属性?

    我想将 Doxygen 注释附加到我的 Q PROPERTY 例如 song h class Song public QObject Q OBJECT private Q PROPERTY QString title READ title
  • static_assert 有什么作用,你会用它做什么?

    你能举个例子吗static assert C 11 会优雅地解决手头的问题吗 我熟悉运行时assert 我应该选择什么时候static assert 超过常规assert 另外 在boost有一种东西叫做BOOST STATIC ASSER
  • 为什么我在 Intellij IDEA 11 中调试 Nodejs 应用程序失败?

    我有一个单进程 node js 应用程序 我希望使用 Intellij IDEA 11 32 位进行调试 node js 也是 32 位 因此 我放置一个初始断点并运行 调试器在断点处停止 但随后拒绝执行以下任何操作 步入 转到另一个断点
  • 是否存在与 Windows 7 内核符号相关的已知问题?

    我有几台 Windows 7 机器 我无法读取它们的内存转储 我发现一些我怀疑可能相关的东西 但并不肯定 https twitter com aionescu status 634028737458114560 https twitter
  • 针对初学者的 QT 商业许可证与非商业许可证 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 QT 许可似乎非常反学习 因为据我所知 用它开发的任何东西都只能是商业的当且仅当 its entire开发是在使用商业许可证的情况下完成的
  • 有没有办法使用 Eclipse 调试 Web 应用程序?

    我正在使用 Eclipse Java IDE 开发 Web 应用程序 我使用 Tomcat 6 作为我的 servlet 容器 可用于 Java 的工具 包括 Eclipse 似乎缺乏 Web 应用程序的调试功能 与 NET 平台的 Vis
  • 连接到 QNetworkReply::error 信号

    我正在使用 Qt5 的新连接语法 QNetworkReply 有一个名为error http qt project org doc qt 5 0 qtnetwork qnetworkreply html error 2还有一个函数叫做err
  • Visual Studio Code 调试默认 ASP.NET Core MVC WebApp:不起作用

    我正在使用 Manjaro linux 并尝试调试默认的 ASP NET Core MVC 项目 但调试停止 没有任何错误 我创建了该项目 dotnet new mvc in a Meow文件夹 没什么特别的 然后添加了新的配置 NET C
  • 使用 QGraphicsScene 实现流畅的动画

    我希望我的问题并不总是同样的问题 我有一个 QGraphicsScene 它的项目是一些 QGraphicsPixmap 我用一个计时器来移动它们 每秒 SetX 10 我设置 10是因为窗口大100 使用这个解决方案我的动画不流畅 我想我
  • QFileSystemModel setRootPath

    我正在尝试创建一个 Qt 应用程序来显示文件夹 Mac OS 中的 Users 文件夹 的内容 这是代码 QFileSystemModel dirModel new QFileSystemModel dirModel gt setRootP
  • Qt(在 Windows 上)将权限级别设置为“requireAdministrator”

    我正在使用 Qt Creator 并努力制作 exe文件默认以管理员身份运行 在线阅读所有解决方案我试图将这一行放入我的 pro file QMAKE LFLAGS MANIFESTUAC level requireAdministrato
  • Q风格所有权

    在 Qt 应用程序中使用样式时 我遇到了一个有趣的问题QStyle所有权 QStyle继承自QObject 通常接受QObject parent作为构造函数参数来管理其子级的生命周期 但QStyle的构造函数没有此构造函数参数 第一个问题
  • 可以获取SQL Server中当前执行的存储过程的行号吗?

    几年前 我在 Sybase Delphi 环境中工作 使用 BDE 连接到数据库服务器 我们有一个 Delphi 小应用程序 给定当前正在执行的存储过程的名称 它可以告诉您当前正在执行该存储过程的哪一行 这对于调试似乎挂起的存储过程非常有用
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某

随机推荐

  • 如何使用 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