我有一个带有几个标签的Qwidget。在其中一个选项卡中,单击按钮后,函数将开始处理数据并更新进度条。
我希望能够在此过程运行时更改标签,目前它不允许我这样做。任何的想法?
答案 0 :(得分:1)
(1)你必须使用模态的无模式进程。实际上,主事件循环必须获得控件以允许用户交互。 http://www.bogotobogo.com/Qt/Qt5_QProgressDialog_Modal_Modeless_QTimer.php
(2)您应该将数据处理功能放到工作线程中,并从中调用进程对话框更新到主UI线程。这样你的任务就不会阻止UI,所以你可以同时与窗口交互(比如更改标签)。
QFuture
,QtConcurrent::run()
:在单独的线程中运行任务。QFutureWatcher
:帮助监视在工作线程中运行的任务的进度。
例:
http://doc.qt.io/qt-5/qtconcurrent-progressdialog-example.html 答案 1 :(得分:1)