如何在QT中更新进度条时更改选项卡
我有一个带有几个标签的Qwidget。在其中一个选项卡中,单击按钮后,函数开始处理数据并更新进度条 我希望能够在这个进程运行时更改选项卡,目前它不允许我这样做。有什么想法吗 (1)必须使用无模式进程对话框而不是模式进程对话框。实际上,主事件循环必须获得允许用户交互的控件。 (2) 您应该将数据处理函数放在工作线程中,并从该线程调用一个进度对话框更新到主UI线程。这样,您的任务就不会阻塞UI,所以您可以同时与窗口交互(如更改选项卡)如何在QT中更新进度条时更改选项卡,qt,tabs,progress-bar,qwidget,Qt,Tabs,Progress Bar,Qwidget,我有一个带有几个标签的Qwidget。在其中一个选项卡中,单击按钮后,函数开始处理数据并更新进度条 我希望能够在这个进程运行时更改选项卡,目前它不允许我这样做。有什么想法吗 (1)必须使用无模式进程对话框而不是模式进程对话框。实际上,主事件循环必须获得允许用户交互的控件。 (2) 您应该将数据处理函数放在工作线程中,并从该线程调用一个进度对话框更新到主UI线程。这样,您的任务就不会阻塞UI,所以您可以同时与窗口交互(如更改选项卡) Qt还提供了实现此功能的方法,您可能希望参考: QFutu
- Qt还提供了实现此功能的方法,您可能希望参考:
,QFuture
:在单独的线程中运行任务QtConcurrent::run()
:帮助监视工作线程中运行的任务的进度。 例子:QFutureWatcher
- Qt还提供了实现此功能的方法,您可能希望参考:
,QFuture
:在单独的线程中运行任务QtConcurrent::run()
:帮助监视工作线程中运行的任务的进度。 例子:QFutureWatcher
- 可以通过使用QThread实现这一点李>
- 将进程移动到单独的线程(假定为工作线程)
- 所以现在将有两个线程(1.主线程和2.工作线程)
- 从工作线程执行进程
- 使用信号和插槽机制在主线程(1)和工作线程(2)之间通信(更新GUI和/或执行某些进程)
- 此逻辑将阻止应用程序挂起李>
- 请参阅此以了解详细信息李>
您可以获得遵循上述逻辑的示例应用程序
应用程序屏幕截图:
启动进程(线程):启动线程并执行进程
停止进程(线程):停止下面的线程逻辑可能会帮助您 - 可以通过使用QThread实现这一点李>
- 将进程移动到单独的线程(假定为工作线程)
- 所以现在将有两个线程(1.主线程和2.工作线程)
- 从工作线程执行进程
- 使用信号和插槽机制在主线程(1)和工作线程(2)之间通信(更新GUI和/或执行某些进程)
- 此逻辑将阻止应用程序挂起李>
- 请参阅此以了解详细信息李>
您可以获得遵循上述逻辑的示例应用程序
应用程序屏幕截图:
启动进程(线程):启动线程并执行进程
停止进程(线程):停止线程
- 下面的逻辑可能对您有所帮助