Qt 程序挂起(无响应)直到函数结束然后再次开始工作

2024-03-26

我在 Qt 中有一个 UI 应用程序,有几个函数可以运行大规模 SQL 查询,返回数千个结果。

当单击运行此查询的按钮时,UI 窗口立即变为“无响应”,但是我可以从控制台输出中看到,所有内容实际上仍在后台运行。一旦函数结束,数据就会按预期显示,并且 UI 会再次响应并完全发挥作用。

我知道这是因为由于结果数量较多,该函数循环了数千次,但我希望我可以放入一个随着搜索而进行的加载栏,而不是仅仅锁定窗口看起来像是程序崩溃了。 AFAIK 我没有内存泄漏,所以有人有什么建议吗?

哦,我也认为这不是内存泄漏,因为当我单击该按钮时,任务管理器显示此进程仅使用了几 MB 内存,并且处理器也决不会最大化


在应用程序中,有一个线程负责处理 UI 事件、消息(无论您如何称呼它们)。假设您有一个按钮单击事件。只要您不从回调函数返回,就不会触发其他 UI 事件(重绘、更新等),并且 UI 变得无响应。

为了缓解这种情况,您应该考虑在单独的线程中执行耗时的任务,并在完成后相应地更新 UI。如果您需要在处理任务时阻止 UI,您可以禁用控件、显示弹出进度条等,但要保持 UI 线程相对空闲,以避免“不响应”问题。

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

Qt 程序挂起(无响应)直到函数结束然后再次开始工作 的相关文章

随机推荐

  • Android Sqlite 问题

    我正在尝试实现一个在以下位置找到的 SQLite 示例安卓10 http www android10 org index php articlesdatastorage 235 creating and using databases in
  • 如何使用一个简单的命令将大量变量附加到一个变量

    我想将所有变量粘贴到一个变量中 A blah AA blah2 AAA blah3 AAB blah4 AAC blah5 lets pretend theres 100 more of these Variable composition
  • Google App Engine 中通道池的最佳方法

    似乎使 GAE Channel API 在财务上可行的唯一方法是实施某种池化机制 当我向他们发送有关过高价格的电子邮件时 一位高级应用程序引擎产品经理甚至告诉我这一点 以重用尚未使用的渠道已到期 我一直在集思广益地讨论实现通道池的方法 地点
  • 如何使用 JMeter 将 application/x-www-form-urlencoded 参数发送到 RestServer?

    我开发了一个休息服务器 并将其在本地主机中运行 我尝试使用 JMeter 执行测试 发送请求帖子和获取 取决于调用的方法 我已经发送到 Rest 服务器并使用 JMeter 在简单的 post 请求 获取请求 通过 post 发送文件以及通
  • 活动目录与 OpenLDAP

    LDAP 协议的这两种实现之间的主要区别是什么 异构环境哪个更好 关于这个主题有什么好的网站吗 以下是我立即知道的一些差异 OpenLDAP 可以称为通用 LDAP 服务器 类似于许多其他供应商的 LDAP 服务器 Fedora DS 38
  • Pandas 替换所有列名称中的一个字符

    我的数据框的列名称 来自 csv 文件 包含 and 我想将它们替换为 我怎样才能对所有列进行此操作 Use str replace http pandas pydata org pandas docs stable generated p
  • 如何将 WPF DataGrid 绑定到可变数量的列?

    我的 WPF 应用程序生成的数据集每次可能具有不同的列数 输出中包含对将用于应用格式设置的每列的描述 输出的简化版本可能类似于 class Data IList
  • Cell Swift 中的 UITextView

    我已经搞乱这些限制几个小时了 但无法弄清楚这一点 我的文本视图需要动态单元格高度 正如你所看到的 它与我的时间戳重叠 截至目前 我对时间戳的限制为零 无 我已经尝试了所有可能的组合来完成这项工作 但我无法做到 我也在使用 override
  • MySQL触发器与事务插入或更新

    我正在使用 mysql db 和 java 所以在我的应用程序中我需要使用触发器 但我需要在插入或更新时保存它 当在表A中插入新记录时 触发器将完成在另一个表B中插入一些信息的工作 同样 当对表A中的记录进行更新时 触发器将更新表B中的记录
  • PHP:数组的索引、元素、键、值之间有区别吗?...它们是同一件事吗?

    当处理PHP arrays 我经常在这里使用这样的术语 Array Key Array Index Array Element Array Value 有人可以吗 PLEASE in simple术语解释了其中每一个的含义基本上 means
  • Visual C++ 中的嵌套注释?

    是否可以在 Visual C 中启用嵌套注释 如果有的话 我似乎找不到开关 C 标准中不允许嵌套注释 Visual C 支持该标准 抱歉 没有嵌套评论
  • 服务可以在 onBind 期间获取对 Activity 的引用吗?

    我有一项服务基本上管理媒体播放器播放实例podcasts 一旦活动绑定到服务 它就可以执行播放 暂停 停止等操作 我使用服务是因为我希望播客即使在活动被销毁后也能继续播放 我希望该服务能够在发生错误或正常状态更新时将消息发送回活动 该服务是
  • 如何在 Django-Registration 中使用不同的表单

    Django Registration 在 forms py 文件中有几个表单类 一是 类 RegistrationFormTermsOfService RegistrationForm 我需要对 Django 注册代码的其余部分进行哪些更
  • 会话在控制器方法中变为空

    我有以下控制器 在该控制器中我创建了会话来保存IENUMERABLE数据集 HttpPost ValidateInput false public ActionResult Create Brochure IEnumerable
  • Swift:一个数组中的不同对象?

    一个数组中是否可以有两个不同的自定义对象 我想在一个中显示两个不同的对象UITableView我认为最简单的方法是将所有对象放在一个数组中 根据您想要对数组进行多少控制 您可以创建两种对象类型都实现的协议 该协议不需要包含任何内容 可能是
  • 当拥有 @objcMembers 私有动态变量时 @objc 冗余?

    因此 我将 Realm 与 Swift 结合使用 并使用 objcMembers 关键字标记我的类 但是当我尝试创建一些私有变量时 Xcode 强制我在这些私有变量旁边添加 objc 这是有意的行为吗 看来这对我来说是多余的 objcMem
  • deepcopy 不尊重元类

    我有一堂课 根据设计 必须遵循单例图案 所以我继续使用元类 一切都运行良好 直到报告了一个错误 总而言之 deepcopy ied 我的实例单例类不是相同的实例 我可以通过从基础继承来解决这个错误单例 type 类 但我宁愿不这样做 原因在
  • 我如何确保 Spring roo 生成的方面是由依赖项目编织的?

    我有一个春天Roo多模块项目 我注意到在另一个项目中包含包含我的域模型的 jar 模块后 各个方面还没有被编织给我留下了没有任何可用的 getter setter 的域类 如何确保 Spring roo 生成的切面是由依赖项目编织的 EDI
  • 如何在没有 Windows iTunes 的情况下在 iPhone 上安装 IPA [已关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 在没有 Mac 或不使用 iTunes 的情况下 如何在 iPhone 上安装 iPhone 应用程序 IPA 另外 如果这还不够困难
  • Qt 程序挂起(无响应)直到函数结束然后再次开始工作

    我在 Qt 中有一个 UI 应用程序 有几个函数可以运行大规模 SQL 查询 返回数千个结果 当单击运行此查询的按钮时 UI 窗口立即变为 无响应 但是我可以从控制台输出中看到 所有内容实际上仍在后台运行 一旦函数结束 数据就会按预期显示