⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qprogressdialog.html

📁 QT参考文档
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<!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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -