qprogressdialog.html

来自「QT 下载资料仅供参考」· HTML 代码 · 共 323 行 · 第 1/2 页

HTML
323
字号
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><!-- /home/reggie/tmp/qt-3.0-reggie-5401/qt-x11-commercial-3.0.5/src/dialogs/qprogressdialog.cpp:99 --><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><meta name="Translator" content="Cavendish"><meta name="Qt zh_CN Documents Website" content="http://www.qiliang.net/qt"><title>QProgressDialog类</title><style type="text/css"><!--h3.fn,span.fn { margin-left: 1cm; text-indent: -1cm; }a:link { color: #004faf; text-decoration: none }a:visited { color: #672967; text-decoration: none }body { background: #ffffff; color: black; font-family: "Times New Roman" }--></style></head><body><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr bgcolor="#E5E5E5"><td valign=center> <a href="index.html"><font color="#004faf">主页</font></a> | <a href="classes.html"><font color="#004faf">所有的类</font></a> | <a href="mainclasses.html"><font color="#004faf">主要的类</font></a> | <a href="annotated.html"><font color="#004faf">注释的类</font></a> | <a href="groups.html"><font color="#004faf">分组的类</font></a> | <a href="functions.html"><font color="#004faf">函数</font></a></td><td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table><h1 align=center>QProgressDialog类参考</h1><p>QProgressDialog类提供了慢操作的进度的反馈。<a href="#details">详情请见……</a><p><tt>#include &lt;<a href="qprogressdialog-h.html">qprogressdialog.h</a>&gt;</tt><p>继承了<a href="qdialog.html">QDialog</a>。<p><a href="qprogressdialog-members.html">所有成员函数的列表。</a><h2>公有成员</h2><ul><li><div class=fn><a href="#QProgressDialog"><b>QProgressDialog</b></a> ( QWidget&nbsp;*&nbsp;creator = 0, const&nbsp;char&nbsp;*&nbsp;name = 0, bool&nbsp;modal = FALSE, WFlags&nbsp;f = 0 )</div></li><li><div class=fn><a href="#QProgressDialog-2"><b>QProgressDialog</b></a> ( const&nbsp;QString&nbsp;&amp;&nbsp;labelText, const&nbsp;QString&nbsp;&amp;&nbsp;cancelButtonText, int&nbsp;totalSteps, QWidget&nbsp;*&nbsp;creator = 0, const&nbsp;char&nbsp;*&nbsp;name = 0, bool&nbsp;modal = FALSE, WFlags&nbsp;f = 0 )</div></li><li><div class=fn><a href="#~QProgressDialog"><b>~QProgressDialog</b></a> ()</div></li><li><div class=fn>void <a href="#setLabel"><b>setLabel</b></a> ( QLabel&nbsp;*&nbsp;label )</div></li><li><div class=fn>void <a href="#setCancelButton"><b>setCancelButton</b></a> ( QPushButton&nbsp;*&nbsp;cancelButton )</div></li><li><div class=fn>void <a href="#setBar"><b>setBar</b></a> ( QProgressBar&nbsp;*&nbsp;bar )</div></li><li><div class=fn>bool <a href="#wasCancelled"><b>wasCancelled</b></a> () const</div></li><li><div class=fn>int <a href="#totalSteps"><b>totalSteps</b></a> () const</div></li><li><div class=fn>int <a href="#progress"><b>progress</b></a> () const</div></li><li><div class=fn>virtual QSize <a href="#sizeHint"><b>sizeHint</b></a> () const</div></li><li><div class=fn>QString <a href="#labelText"><b>labelText</b></a> () const</div></li><li><div class=fn>void <a href="#setAutoReset"><b>setAutoReset</b></a> ( bool&nbsp;b )</div></li><li><div class=fn>bool <a href="#autoReset"><b>autoReset</b></a> () const</div></li><li><div class=fn>void <a href="#setAutoClose"><b>setAutoClose</b></a> ( bool&nbsp;b )</div></li><li><div class=fn>bool <a href="#autoClose"><b>autoClose</b></a> () const</div></li><li><div class=fn>int <a href="#minimumDuration"><b>minimumDuration</b></a> () const</div></li></ul><h2>公有槽</h2><ul><li><div class=fn>void <a href="#cancel"><b>cancel</b></a> ()</div></li><li><div class=fn>void <a href="#reset"><b>reset</b></a> ()</div></li><li><div class=fn>void <a href="#setTotalSteps"><b>setTotalSteps</b></a> ( int&nbsp;totalSteps )</div></li><li><div class=fn>void <a href="#setProgress"><b>setProgress</b></a> ( int&nbsp;progress )</div></li><li><div class=fn>void <a href="#setLabelText"><b>setLabelText</b></a> ( const QString &amp; )</div></li><li><div class=fn>void <a href="#setCancelButtonText"><b>setCancelButtonText</b></a> ( const&nbsp;QString&nbsp;&amp;&nbsp;cancelButtonText )</div></li><li><div class=fn>void <a href="#setMinimumDuration"><b>setMinimumDuration</b></a> ( int&nbsp;ms )</div></li></ul><h2>信号</h2><ul><li><div class=fn>void <a href="#cancelled"><b>cancelled</b></a> ()</div></li></ul><h2>属性</h2><ul><li><div class=fn>bool <a href="#autoClose-prop"><b>autoClose</b></a>&nbsp;- 通过reset()对话框是否隐藏</div></li><li><div class=fn>bool <a href="#autoReset-prop"><b>autoReset</b></a>&nbsp;- 一旦progress()等于totalSteps(),进度对话框是否调用reset()</div></li><li><div class=fn>QString <a href="#labelText-prop"><b>labelText</b></a>&nbsp;- 标签的文本</div></li><li><div class=fn>int <a href="#minimumDuration-prop"><b>minimumDuration</b></a>&nbsp;- 进度就应该在对话框打开之前运行的时间</div></li><li><div class=fn>int <a href="#progress-prop"><b>progress</b></a>&nbsp;- 进度当前的进度</div></li><li><div class=fn>int <a href="#totalSteps-prop"><b>totalSteps</b></a>&nbsp;- 步数的总量</div></li><li><div class=fn>bool <a href="#wasCancelled-prop"><b>wasCancelled</b></a>&nbsp;- 对话框是否被取消&nbsp;<em>(只读)</em></div></li></ul><h2>保护槽</h2><ul><li><div class=fn>void <a href="#forceShow"><b>forceShow</b></a> ()</div></li></ul><hr><a name="details"></a><h2>详细描述</h2>QProgressDialog类提供了慢操作的进度的反馈。<p> 进度对话框用于给用户这个操作还要有多长时间的指示,并且证明这个应用程序还没有冻结。它也给用于一个中止这个操作运行的机会。<p> 进度对话框的一个常见问题是很难知道什么时候使用它们,操作在不同的硬件会占用不同的时间。QProgessDialog提供了对这个问题的解决方案:它估计操作将占用的时间(基于没步的时间),并且如果它超过<a href="#minimumDuration">minimumDuration</a>()(默认为4秒)才显示自己。<p> 使用<a href="#setTotalSteps">setTotalSteps</a>()(或者在构造函数中)设置操作中的“步”数并且调用<a href="#setProgress">setProgress</a>()作为操作进度。步值的选择是任意的。它可以是复制的文件数,接收的字节数,在你的算法的主循环中的反复次数,或者一些其它的适合单元。进度从0开始,并且当你把<a href="#totalSteps">totalSteps</a>()作为参数调用setProgress(),这个进度对话框会显示这个操作已经完成。<p> 对话框会在操作结束的时候自动重置并且隐藏自己。使用<a href="#setAutoReset">setAutoReset</a>()和<a href="#setAutoClose">setAutoClose</a>()可以改变这个行为。<p> 这里有使用QProgressDialog的两种方法:模式和非模式。<p> 对于程序员,使用模式QProgressDialog是更简单的,但是你必须调用qApp->processEvents()来保持事件循环的运行来确保应用程序没有冻结。在循环中执行这个操作,在间隔中调用<a href="#setProgress">setProgress</a>(),并且检查<a href="#wasCancelled">wasCancelled</a>()的取消。例如:<pre>QProgressDialog progress( "Copying files...", "Abort Copy", numFiles,                          this, "progress", TRUE );for ( int i = 0; i &lt; numFiles; i++ ) {    progress.setProgress( i );    qApp-&gt;<a href="qapplication.html#processEvents">processEvents</a>();    if ( progress.wasCancelled() )        break;    //……复制文件}progress.setProgress( numFiles );</pre> <p> 非模式进度对话框适合发生在后台的操作,用户还可以和应用程序进行交互。这样的操作通常是基于<a href="qtimer.html">QTimer</a>(或者<a href="qobject.html#timerEvent">QObject::timerEvent</a>())、<a href="qsocketnotifier.html">QSocketNotifier</a>或<a href="qurloperator.html">QUrlOperator</a>,或者在一个独立的进度中执行。你的主窗口的状态条中的<a href="qprogressbar.html">QProgressBar</a>常常可以做为模式进度对话框的替代。<p> 你需要拥有一个正在运行的时间循环,把<a href="#cancelled">cancelled</a>()信号和停止这个操作的槽连接起来,并且在间隔中调用<a href="#setProgress">setProgress</a>()。例如:<pre>Operation::Operation( <a href="qobject.html">QObject</a> *parent = 0 )    : <a href="qobject.html">QObject</a>( parent ), steps( 0 ){    pd = new QProgressDialog( "Operation in progress.", "Cancel", 100 );    <a href="qobject.html#connect">connect</a>( pd, SIGNAL(<a href="#cancelled">cancelled</a>()), this, SLOT(<a href="#cancel">cancel</a>()) );    t = new <a href="qtimer.html">QTimer</a>( this );    <a href="qobject.html#connect">connect</a>( t, SIGNAL(<a href="qtimer.html#timeout">timeout</a>()), this, SLOT(perform()) );    t-&gt;<a href="qtimer.html#start">start</a>( 0 );}void Operation::perform(){    pd-&gt;<a href="#setProgress">setProgress</a>( steps );    //……执行操作的一个半分比    steps++;    if ( steps &gt; pd-&gt;<a href="#totalSteps">totalSteps</a>() )        t-&gt;<a href="qtimer.html#stop">stop</a>();}void Operation::cancel(){    t-&gt;<a href="qtimer.html#stop">stop</a>();    //……清除}</pre> <p> 你可以通过使用<a href="#setLabel">setLabel</a>()、<a href="#setBar">setBar</a>()和<a href="#setCancelButton">setCancelButton</a>()用自定制的窗口部件来替换子窗口部件来定制这两种进度对话框。<p> <img src=qprogdlg-m.png> <img src=qprogdlg-w.png><p> <p>也可以参考<a href="qdialog.html">QDialog</a>、<a href="qprogressbar.html">QProgressBar</a>、<a href="guibooks.html#fowler">图形用户界面设计手册:进度指示器</a>和<a href="dialogs.html">Dialog Classes</a>。<hr><h2>成员函数文档</h2><h3 class=fn><a name="QProgressDialog"></a>QProgressDialog::QProgressDialog ( <a href="qwidget.html">QWidget</a>&nbsp;*&nbsp;creator = 0, const&nbsp;char&nbsp;*&nbsp;name = 0, bool&nbsp;modal = FALSE, WFlags&nbsp;f = 0 )</h3>构造一个进度对话框。<p> 默认设置:<ul><li> 标签文本为空。<li> 取消按钮文本是(被翻译的)“Cancel”。<li> 步数的总量是100。</ul><p> <em>creator</em>窗口部件的顶级父对象变为这个对话框的父对象。<em>name</em>、<em>modal</em>和窗口部件标记<em>f</em>被传递给<a href="qdialog.html#QDialog">QDialog::QDialog</a>()的构造函数。如果<em>modal</em>为假(默认),你必须有一个正在进行的事件循环来重新绘制这个对话框的变化。如果<em>modal</em>为真,这个对话框确保当需要的时候事件会被处理。<p> <p>也可以参考<a href="#labelText-prop">labelText</a>、<a href="#setLabel">setLabel</a>()、<a href="#setCancelButtonText">setCancelButtonText</a>()、<a href="#setCancelButton">setCancelButton</a>()和<a href="#totalSteps-prop">totalSteps</a>。<h3 class=fn><a name="QProgressDialog-2"></a>QProgressDialog::QProgressDialog ( const&nbsp;<a href="qstring.html">QString</a>&nbsp;&amp;&nbsp;labelText, const&nbsp;<a href="qstring.html">QString</a>&nbsp;&amp;&nbsp;cancelButtonText, int&nbsp;totalSteps, <a href="qwidget.html">QWidget</a>&nbsp;*&nbsp;creator = 0, const&nbsp;char&nbsp;*&nbsp;name = 0, bool&nbsp;modal = FALSE, WFlags&nbsp;f = 0 )</h3>构造一个进度对话框。<p> <em>labelText</em>是用于提行用户什么正在进行的文本。

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?