如何在 Open CASCADE 中创建进度条或加载图标

问题描述

我正在 OpenCASCADE 中寻找可以为我提供等待图标或进度条的 API,以帮助我减少创建或打开对象的时间延迟

解决方法

OCCT 不是 GUI 框架或应用程序 - 它没有实现任何等待光标或类似的东西。

应用程序预计:

  • 后台线程中执行长时间操作以防止 GUI 线程冻结。线程创建、与 GUI 线程的互操作、围绕修改结构的适当互斥锁以避免数据竞争 - 由应用程序代码负责。尽管您可能会使用 OCCT 的 OSD_Thread/Standard_Mutex/Standard_Condition 工具。
  • 在 GUI 中向用户显示长时间操作(如等待光标)的指示,并在后台操作完成之前防止意外的用户输入(锁定输入按钮等)。这是 GUI 框架特有的。
  • 尽可能使用所需的 GUI 控件来实现 Message_ProgressIndicator 界面(作为等待光标的替代方法)并且有意义。这也非常特定于 GUI 框架和目标平台(例如,Windows 提供了一个专用 API,用于直接在任务栏上显示进度指示)。

GUI 线程中的长计算是危险的,但是如果应用程序是否会向用户显示等待图标。这样的应用程序可能被认为是挂起的——在 Windows 上点击这样的窗口会建议用户杀死挂起的应用程序或多等一会儿,Android 可能会更快地杀死应用程序。这不是特定于 OCCT 的内容,而是一般性指南。

Progress Indication in Draw Harness

this post 中,您还可以查看 OCCT 中 Message_ProgressIndicator API 的说明。该 API 由许多 OCCT 算法公开,但也可由应用程序算法使用。