MProgressWindow不会在Autodesk Maya API中刷新

MProgressWindow does not refresh in Autodesk Maya API

本文关键字:API 刷新 Maya Autodesk MProgressWindow      更新时间:2023-10-16

我在Maya/C++中有一个MProgressWindow类引用。但是,窗口保持在0%(有时甚至保持空白)并且不会上升。我做错了什么?

MProgressWindow P ;
P.reserve() ;
P.setProgressMin( 0 ) ;
P.setProgressMax( 1000 ) ;
P.startProgress() ;
    for (int i = 0; i < 1000; i++ ) {
        // do some work
        if ( i % 100 == 0) {
            P.setProgressStatus( "Progress "+ MString() + i + "/" + MString() + P.progressMax() ) ;
            P.advanceProgress( 100 ) ;
        }
    }
    P.endProgress() ;

Maya中只有一个进度窗口,因此您不需要自己实例化它,它已经存在,而您将在对话框中放置一个。这就是为什么你没有看到任何事情发生,你实例化了一个内存对象。试试这个。

附带说明-所有方法都是静态的,所以您可以通过基类名称和:来调用它们

if ( !MProgressWindow::.reserve () )
    return ;
MProgressWindow::setInterruptable (true) ;
MProgressWindow::setProgressRange (0, 1000) ;
P.setProgress (0) ;
P.startProgress () ;
for ( int i =0 ; i<1000 ; i++ ) {
    if ( i != 0 && MProgressWindow::isCancelled () )
        break ;
    <do some work>
    if ( i % 100 == 0 ) {
        MProgressWindow::setProgressStatus ("Progress " + MString () + i + "/" + MString () + P.progressMax ()) ;
        MProgressWindow::advanceProgress (100) ;
    }
}
MProgressWindow::endProgress () ;