关于qt调用Fortran的dll程序设置进度条的问题
各位老师,我现在遇到一个问题,就是我调用Fortran的dll需要运行时间过长,所以我想设置一个进度条来表示dll运行的进度,当调用外部程序结束时,进度条正好显示百分百,我应该如何在Fortran程序中建立函数来把实时的进度传递到qt中呢?请各位老师指教。int setProgress(int i){
ui->progress->setValue(i);
}
int some(){
fortran_func( ... , ... , setProgress )
}
Subroutine Fortran_Func( ... , ... , callBack )
do i = 1 , 1000
....
call callBack( i )
end do
End Subroutine Fortran_Func 本帖最后由 紫雪封尘 于 2019-9-6 11:05 编辑
您好,您的意思是设置回调函数,我做了测试,但是由于对c++不很熟悉,所以我写的语句遇到了错误,请老师指教。
void Thread::progress(int a)
{
emit UpdateSignal(a);
}
void Widget::UpdateSlot(int num)
{
ui->progressBar->setValue(num);}
void Thread::run()
{
typedef void(*setprogress)(int) ;
typedef void(*QTSEG)(setprogress );
QLibrary dll("Dllsey_information.dll");
if(dll.load())
{
QTSEG in=(QTSEG)dll.resolve("PROGRESS");
in(progress );//此处报错,说是由于非静态函数的关系,我不知如何修改,请指教
}
}
QDialog *pThis;
void progress(int a){
pThis->ui->progress->setValue(a);
}
void QDialog::on_okBtn_clicked(){
pThis = this;
thread->start();
}
void Thread::run(){
in(progress);
}
页:
[1]