[英]QT Progress bar showing status of a function
最近,我正在與QT合作進行點雲圖書館項目。 我想知道使用函數時是否可以知道當前進度。
例如,我創建了一個類名稱系統,並帶有一個名為estimate_normal
的公共函數。 這里面estimate_normal
,我把從圖書館PCL一些功能,並在MainWindow.cpp我打電話
system a;
a.estimate_normal();
我可以通過使用QT進度欄查看此estimate_normal
狀態來了解進度嗎?
謝謝
您應該在堆上創建“系統”類的對象,然后將其移至新線程,以防止Estimate_normal()阻塞主線程和UI。 可以這樣完成:
a = new system();
QThread * th = new QThread();
a->moveToThread(th);
QObject::connect(th,SIGNAL(started()),a,SLOT(OnStarted()));
QObject::connect(th,SIGNAL(finished()),a,SLOT(OnFinished()));
th->start();
在“系統”類中的初始化和終止任務應分別在OnStarted()和OnFinished()插槽中完成。
您應該在“系統”類中使用一個信號,以將進度值通知用戶界面中的進度欄。 在您的estimate_normal()函數中,您應該發出具有適當值的信號。 信號就像:
void progressChanged(int val);
您還應該將progressChanged(int)信號連接到QProgressBar的setValue(int value)插槽。
最后一點是,當它在另一個線程中時,您不應直接調用estimate_normal()。 正確的方法是將estimate_normal()定義為一個插槽,然后將信號連接到該插槽並在您要調用estimate_normal()時發出信號。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.