繁体   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