簡體   English   中英

QT進度欄顯示功能狀態

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM