?? qdialog.html
字號:
<!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/qdialog.cpp:59 -->
<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>QDialog類</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>QDialog類參考</h1>
<p>QDialog類是對話框窗口的基類。
<a href="#details">詳情請見……</a>
<p><tt>#include <<a href="qdialog-h.html">qdialog.h</a>></tt>
<p>繼承了<a href="qwidget.html">QWidget</a>。
<p>被<a href="qcolordialog.html">QColorDialog</a>、<a href="qerrormessage.html">QErrorMessage</a>、<a href="qfiledialog.html">QFileDialog</a>、<a href="qfontdialog.html">QFontDialog</a>、<a href="qinputdialog.html">QInputDialog</a>、<a href="qmessagebox.html">QMessageBox</a>、<a href="qprogressdialog.html">QProgressDialog</a>、<a href="qtabdialog.html">QTabDialog</a>和<a href="qwizard.html">QWizard</a>繼承。
<p><a href="qdialog-members.html">所有成員函數的列表。</a>
<h2>公有成員</h2>
<ul>
<li><div class=fn><a href="#QDialog"><b>QDialog</b></a> ( QWidget * parent = 0, const char * name = 0, bool modal = FALSE, WFlags f = 0 )</div></li>
<li><div class=fn><a href="#~QDialog"><b>~QDialog</b></a> ()</div></li>
<li><div class=fn>enum <a href="#DialogCode-enum"><b>DialogCode</b></a> { Rejected, Accepted }</div></li>
<li><div class=fn>int <a href="#result"><b>result</b></a> () const</div></li>
<li><div class=fn>virtual void <a href="#show"><b>show</b></a> ()</div></li>
<li><div class=fn>void <a href="#setOrientation"><b>setOrientation</b></a> ( Orientation orientation )</div></li>
<li><div class=fn>Orientation <a href="#orientation"><b>orientation</b></a> () const</div></li>
<li><div class=fn>void <a href="#setExtension"><b>setExtension</b></a> ( QWidget * extension )</div></li>
<li><div class=fn>QWidget * <a href="#extension"><b>extension</b></a> () const</div></li>
<li><div class=fn>void <a href="#setSizeGripEnabled"><b>setSizeGripEnabled</b></a> ( bool )</div></li>
<li><div class=fn>bool <a href="#isSizeGripEnabled"><b>isSizeGripEnabled</b></a> () const</div></li>
</ul>
<h2>公有槽</h2>
<ul>
<li><div class=fn>int <a href="#exec"><b>exec</b></a> ()</div></li>
</ul>
<h2>屬性</h2>
<ul>
<li><div class=fn>bool <a href="#sizeGripEnabled-prop"><b>sizeGripEnabled</b></a> - 大小控制是否生效</div></li>
</ul>
<h2>保護成員</h2>
<ul>
<li><div class=fn>void <a href="#setResult"><b>setResult</b></a> ( int i )</div></li>
</ul>
<h2>保護槽</h2>
<ul>
<li><div class=fn>virtual void <a href="#done"><b>done</b></a> ( int r )</div></li>
<li><div class=fn>virtual void <a href="#accept"><b>accept</b></a> ()</div></li>
<li><div class=fn>virtual void <a href="#reject"><b>reject</b></a> ()</div></li>
<li><div class=fn>void <a href="#showExtension"><b>showExtension</b></a> ( bool showIt )</div></li>
</ul>
<hr><a name="details"></a><h2>詳細描述</h2>
QDialog類是對話框窗口的基類。
<p>
<p> 對話框窗口是主要用于短期任務以及和用戶進行簡要通訊的頂級窗口。QDialog可以是模式的也可以是非模式的。QDialog支持<a href="#extensibility">擴展性</a>并且可以提供<a href="#return">返回值</a>。它們可以有<a href="#default">默認按鈕</a>。QDialog也可以有一個<a href="qsizegrip.html">QSizeGrip</a>在它的右下角,使用<a href="#setSizeGripEnabled">setSizeGripEnabled</a>()。
<p> 注意QDialog使用父窗口部件的方法和Qt中其它類稍微不同。對話框總是頂級窗口部件,但是如果它有一個父對象,它的默認位置就是父對象的中間。它也將和父對象共享工具條條目。
<p> 這里有三種有用的對話框:
<p> <ol type=1>
<p> <li> <b>模式</b>對話框就是阻塞同一應用程序中其它可視窗口的輸入的對話框:用戶必須完成這個對話框中的交互操作并且關閉了它之后才能訪問應用程序中的其它任何窗口。模式對話框有它們自己的本地事件循環。用來讓用戶選擇一個文件或者用來設置應用程序參數的對話框通常是模式的。調用<a href="#exec">exec</a>()來顯示模式對話框。當用戶關閉這個對話框,exec()將提供一個可用的<a href="#return">返回值</a>并且這時流程控制繼續從調用exec()的地方進行。通常,我們連接默認按鈕,例如“OK”到<a href="#accept">accept</a>()槽并且把“Cancel”連接到<a href="#reject">reject</a>()槽,來使對話框關閉并且返回適當的值。另外我們也可以連接<a href="#done">done</a>()槽,傳遞給它<a href="#DialogCode-enum">Accepted</a>或<a href="#DialogCode-enum">Rejected</a>。
<p> <li> <b>非模式</b>對話框是和同一個程序中其它窗口操作無關的對話框。在字處理軟件中查找和替換對話框通常是非模式的來允許同時與應用程序主窗口和對話框進行交互。調用<a href="#show">show</a>()來顯示非模式對話框。show()立即返回,這樣調用代碼中的控制流將會繼續。在實踐中你將會經常調用show()并且在調用show()的函數最后,控制返回主事件循環。
<p> <li>
<a name="semimodal"></a>
“<b>半模式</b>”對話框是立即把控制返回給調用者的模式對話框。半模式對話框沒有它們自己的事件循環,所以你將需要周期性地調用<a href="qapplication.html#processEvents">QApplication::processEvents</a>()來讓這個半模式對話框有處理它的事件的機會。進程對話框(例如<a href="qprogressdialog.html">QProgressDialog</a>)就是一個實例,在你想讓用戶能夠和進程對話框交互的地方那個,例如撤銷一個長期運行的操作,但是需要實際上執行這個操作。半模式對話框模式標記被設置為真并且調用<a href="#show">show</a>()函數來被顯示。
</ol>
<p> <a name="default"></a>
<h3> 默認按鈕
</h3>
<a name="1"></a><p> 對話框的“默認”按鈕適當用戶按下回車鍵或者換行鍵時被按下的按鈕。這個按鈕用來表示用戶接受對話框的設置并且希望關閉這個對話框。使用<a href="qpushbutton.html#setDefault">QPushButton::setDefault</a>()、<a href="qpushbutton.html#isDefault">QPushButton::isDefault</a>()和<a href="qpushbutton.html#autoDefault">QPushButton::autoDefault</a>()來設置并且控制對話框的默認按鈕。
<p> <a name="extensibility"></a>
<h3> 擴展性
</h3>
<a name="1-1"></a><p> 擴展性是可以用兩種方式來顯示對話框:一個局部對話框用來顯示通常最常用的選項,和一個顯示所有選項的完全對話框。通常可擴展的對話框將初始化為一個局部對話框,但是有一個“更多”按鈕。如果用戶點擊這個“更多”按鈕,完全對話框將會出現。擴展性是由<a href="#setExtension">setExtension</a>()、<a href="#setOrientation">setOrientation</a>()和<a href="#showExtension">showExtension</a>()。
<p> <a name="return"></a>
<h3> 返回值(模式對話框)
</h3>
<a name="1-2"></a><p> 模式對話框通常用在需要返回值的地方,例如需要分清用戶按下“OK”還是“Cancel”。對話框可以通過調用<a href="#accept">accept</a>()或<a href="#reject">reject</a>()槽來被關閉,并且<a href="#exec">exec</a>()將返回適當的<a href="#DialogCode-enum">Accepted</a>或<a href="#DialogCode-enum">Rejected</a>。exec()返回這個對話框的結果。如果窗口還沒有被銷毀,這個結果也可以通過<a href="#result">result</a>()得到。如果<a href="qt.html#WidgetFlags-enum">WDestructiveClose</a>標記被設置,那么當exec()返回時,對話框被刪除。
<p> <a name="examples"></a>
<h3> 實例
</h3>
<a name="1-3"></a><p> 模式對話框。
<p>
<pre> <a href="qfiledialog.html">QFileDialog</a> *dlg = new <a href="qfiledialog.html">QFileDialog</a>( workingDirectory,
<a href="qstring.html#QString-null">QString::null</a>, 0, 0, TRUE );
<a name="x2100"></a> dlg-><a href="qwidget.html#setCaption">setCaption</a>( QFileDialog::<a href="qobject.html#tr">tr</a>( "Open" ) );
<a name="x2098"></a> dlg-><a href="qfiledialog.html#setMode">setMode</a>( QFileDialog::ExistingFile );
<a href="qstring.html">QString</a> result;
<a name="x2096"></a> if ( dlg-><a href="#exec">exec</a>() == QDialog::<a href="#DialogCode-enum">Accepted</a> ) {
<a name="x2097"></a> result = dlg-><a href="qfiledialog.html#selectedFile">selectedFile</a>();
<a name="x2099"></a> workingDirectory = dlg-><a href="qfiledialog.html#url">url</a>();
}
delete dlg;
return result;
</pre>
<p> 非模式對話框。在<a href="#show">show</a>()調用之后,控制返回到主事件循環中。
<pre> int main( int argc, char **argv )
{
<a href="qapplication.html">QApplication</a> a( argc, argv );
</pre><pre> int scale = 10;
</pre><pre> LifeDialog *life = new LifeDialog( scale );
<a name="x2103"></a> a.<a href="qapplication.html#setMainWidget">setMainWidget</a>( life );
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -