Home · All Classes · Modules · QSS HELP · QSS 案例 · VER007 HOME |
该QProgressDialog类提供了一个缓慢的操作进度的反馈。More...
继承QDialog。
该QProgressDialog类提供了一个缓慢的操作进度的反馈。
使用进度对话框,让用户多长时间的操作是要采取一个指示,并证明该应用程序并没有被冻结。它也可以让用户有机会中止操作。
一个常见的问题与进度对话框是,它是很难知道什么时候使用它们;操作需要不同的时间在不同的硬件。 QProgressDialog提供了一个解决这个问题:它估计当时的操作将(基于时间的步骤) ,并只显示本身,如果这一估计是超越minimumDuration( ) (4秒默认情况下) 。
使用setMinimum()和setMaximum( )或构造函数来设置的“台阶”的数量在操作和调用setValue()作为操作进行。步数可以任意选择。它可以被复制的文件的个数,接收到的字节数,通过您的算法的主循环中,或一些其它合适的单元的迭代次数。进展开始于所设定的值setMinimum( ) ,和进度对话框显示,当你调用操作已完成setValue( )与设定的值setMaximum( )作为它的参数。
该对话框会自动复位,并在手术结束隐藏自身。使用setAutoReset()和setAutoClose()来更改此行为。请注意,如果您设置了新的最大值(使用setMaximum()或setRange( ) ) ,等于您当前value( ) ,该对话框不会关闭不管。
有使用QProgressDialog的方式有两种:模式和无模式。
相对于无模式QProgressDialog ,模态QProgressDialog更容易使用的程序员。做的操作在一个循环中,调用setValue( )间隔,并检查与取消wasCanceled( ) 。例如:
QProgressDialog progress("Copying files...", "Abort Copy", 0, numFiles, this); progress.setWindowModality(Qt.WindowModal); for (int i = 0; i < numFiles; i++) { progress.setValue(i); if (progress.wasCanceled()) break; //... copy one file } progress.setValue(numFiles);
无模式进度对话框是适用于那些发生在后台,用户能够与应用程序交互操作。这种操作通常是基于QTimer(或QObject.timerEvent()),QSocketNotifier或QUrlOperator;或在单独的线程执行。一QProgressBar在主窗口的状态栏往往是一种替代一个无模式进度对话框。
你必须要运行一个事件循环,连接canceled()信号到一个槽,停止的操作,并且呼叫setValue( )间隔。例如:
// Operation constructor Operation.Operation(QObject *parent) : QObject(parent), steps(0) { pd = new QProgressDialog("Operation in progress.", "Cancel", 0, 100); connect(pd, SIGNAL(canceled()), this, SLOT(cancel())); t = new QTimer(this); connect(t, SIGNAL(timeout()), this, SLOT(perform())); t->start(0); } void Operation.perform() { pd->setValue(steps); //... perform one percent of the operation steps++; if (steps > pd->maximum()) t->stop(); } void Operation.cancel() { t->stop(); //... cleanup }
在这两种模式的进度对话框可以通过使用自定义小部件更换子部件进行定制setLabel( )setBar()和setCancelButton( ) 。该功能setLabelText()和setCancelButtonText( )设置显示的文本。
该parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。
构造一个进度对话框。
默认设置:
该parent参数是对话框的父控件。窗口部件标记,f,被传递到QDialog.QDialog( )构造函数。
See also setLabelText( )setCancelButtonText( )setCancelButton( )setMinimum()和setMaximum( ) 。
该parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。
构造一个进度对话框。
该labelText是用来提醒什么进展了用户的文本。
该cancelButtonText是上显示了取消按钮的文本。如果的QString ()传递则不会取消显示按钮。
该minimum和maximum是在步凡本进度对话框显示正在进行的操作数。例如,如果操作是检查50个文件,则该值的最小值是0 ,最大值是50 。在检查的第一个文件,调用的setValue ( 0 ) 。当每个文件处理调用setValue方法( 1 ) , setValue方法( 2 )等,检查的最后一个文件后,终于调用setValue方法( 50 ) 。
该parent参数是对话框的父窗口部件。父,parent和窗口部件标记,f,被传递到QDialog.QDialog( )构造函数。
See also setLabelText( )setLabel( )setCancelButtonText( )setCancelButton( )setMinimum()和setMaximum( ) 。
这种方法也是一个Qt槽与C + +的签名void cancel()。
重置进度对话框。wasCanceled( )为真,直到进度对话框复位。进度对话框被隐藏。
从重新实现QWidget.changeEvent( ) 。
从重新实现QWidget.closeEvent( ) 。
显示已经启动,如果它仍然隐藏算法后的对话框minimumDuration毫秒过去了。
See also setMinimumDuration( ) 。
这是一个重载函数。
在打开的对话框并连接其accepted()信号到由指定的槽receiver和member。
该信号会从插槽中断开时,关闭对话框。
此功能被引入Qt的4.5 。
这种方法也是一个Qt槽与C + +的签名void reset()。
重置进度对话框。进度对话框被隐藏,如果autoClose()是真实的。
See also setAutoClose()和setAutoReset( ) 。
从重新实现QWidget.resizeEvent( ) 。
该bar说法有它的所有权转移给Qt的。
设置进度栏小工具,bar。进度对话框调整大小以适合。进度对话框需要的进度所有权bar这将在必要时不要使用在堆栈上分配一个进度条被删除,所以。
该button说法有它的所有权转移给Qt的。
设置取消按钮,按钮,cancelButton。进度对话框需要这个按钮将被删除必要时的所有权,所以不要传递一个对象,它是在栈上的地址,即使用新的()来创建按钮。如果传递0则没有取消按钮会显示。
See also setCancelButtonText( ) 。
这种方法也是一个Qt槽与C + +的签名void setCancelButtonText(const QString&)。
设置取消按钮的文本cancelButtonText。如果文本被设置为的QString ( ),那么它会导致取消按钮被隐藏和删除。
See also setCancelButton( ) 。
该label说法有它的所有权转移给Qt的。
设置标籤label。进度对话框调整大小以适合。标籤变成了进度对话框,并拥有将被删除必要的时候,所以不要在栈上传递一个对象的地址。
See also setLabelText( ) 。
这种方法也是一个Qt槽与C + +的签名void setLabelText(const QString&)。
这种方法也是一个Qt槽与C + +的签名void setMaximum(int)。
这种方法也是一个Qt槽与C + +的签名void setMinimum(int)。
这种方法也是一个Qt槽与C + +的签名void setMinimumDuration(int)。
将进度对话框的最小值和最大值minimum和maximum元。
If maximum小于minimum,minimum成为唯一的合法值。
如果当前值超出了新的范围,进度对话框会重设reset( ) 。
这种方法也是一个Qt槽与C + +的签名void setValue(int)。
从重新实现QWidget.showEvent( ) 。
从重新实现QWidget.sizeHint( ) 。
返回适合的进度对话框中的内容大小。进度对话框调整自身大小的要求,所以你不应该需要自己调用这个函数。
这是该信号的默认超载。
被点击了取消按钮时,这个信号被发射。它被连接到cancel()槽的默认。
See also wasCanceled( ) 。
PyQt 4.10.3 for X11 | Copyright © Riverbank Computing Ltd and Nokia 2012 | Qt 4.8.5 |