📄 qfiledialog.html
字号:
else
setPixmap( pix );
}
};
</pre>
<p> 在上面的代码段中,我们创建一个继承与<a href="qlabel.html">QLabel</a>和<a href="qfilepreview.html">QFilePreview</a>的预览窗口部件。文件预览窗口部件<em>必须</em>从QFilePreview继承。
<p> 在这个类中我们重新实现了<a href="qfilepreview.html#previewUrl">QFilePreview::previewUrl</a>(),这是我们决定当文件被选择时发生什么。在上面的实例中,如果它是有效的像素映射,我们只是显示文件的预览。这里是文件对话框如何使用预览窗口部件的:
<p> <pre>
Preview* p = new Preview;
QFileDialog* fd = new QFileDialog( this );
fd-><a href="#setContentsPreviewEnabled">setContentsPreviewEnabled</a>( TRUE );
fd-><a href="#setContentsPreview">setContentsPreview</a>( p, p );
fd-><a href="#setPreviewMode">setPreviewMode</a>( QFileDialog::<a href="#PreviewMode-enum">Contents</a> );
fd-><a href="qdialog.html#show">show</a>();
</pre>
<p> 第一行创建了我们的预览窗口部件的实例。然后我们创建我们的文件对话框并且调用<a href="#setContentsPreviewEnabled">setContentsPreviewEnabled</a>( TRUE ),这告诉文件对话框预览当前选择文件的内容。然后我们调用<a href="#setContentsPreview">setContentsPreview</a>()——注意我们传递同样的预览窗口部件两次。最后,在显示文件对话框之前,我们调用<a href="#setPreviewMode">setPreviewMode</a>()来设置<em>Contents</em>为用户选择文件的预览模式来显示内容预览。
<p> 如果你创建另一个预览窗口部件来显示有关文件的信息,那么像内容预览窗口部件一样的方式来创建它并且调用<a href="#setInfoPreviewEnabled">setInfoPreviewEnabled</a>()和<a href="#setInfoPreview">setInfoPreview</a>()。然后用户将能够在两种预览模式中切换。
<p> 有关创建<a href="qfilepreview.html">QFilePreview</a>窗口部件的更多信息,请参考<a href="qfilepreview.html">QFilePreview</a>。
<p> <img src=qfiledlg-m.png> <img src=qfiledlg-w.png>
<p> <p>也可以参考<a href="dialogs.html">对话框类</a>。
<hr><h2>成员类型文档</h2>
<h3 class=fn><a name="Mode-enum"></a>QFileDialog::Mode</h3>
<p> 这个枚举变量用来表明用户可以在文件对话框中选择什么,也就是如果用户点击OK,这个对话框返回什么。
<ul>
<li><tt>QFileDialog::AnyFile</tt> - 文件名称,不论是否存在。
<li><tt>QFileDialog::ExistingFile</tt> - 一个单一存在文件的名称
<li><tt>QFileDialog::Directory</tt> - 目录名称。文件和目录都被显示。
<li><tt>QFileDialog::DirectoryOnly</tt> - 目录名称。只显示目录。
<li><tt>QFileDialog::ExistingFiles</tt> - 0个或更多个存在文件的名称。
</ul><p> 请参考<a href="#setMode">setMode</a>()。
<h3 class=fn><a name="PreviewMode-enum"></a>QFileDialog::PreviewMode</h3>
<p> 这个枚举变量描述的是文件对话框的预览模式。
<ul>
<li><tt>QFileDialog::NoPreview</tt> - 没有预览被显示。
<li><tt>QFileDialog::Contents</tt> - 使用内容预览窗口部件来预览当前文件的内容。
<li><tt>QFileDialog::Info</tt> - 使用信息预览窗口部件来预览有关当前文件的信息。
</ul><p> 请参考<a href="#setPreviewMode">setPreviewMode</a>()、<a href="#setContentsPreview">setContentsPreview</a>()和<a href="#setInfoPreview">setInfoPreview</a>()。
<h3 class=fn><a name="ViewMode-enum"></a>QFileDialog::ViewMode</h3>
<p> 这个枚举变量描述的是文件对话框的视图模式,也就是说关于每个文件都显示什么。
<ul>
<li><tt>QFileDialog::List</tt> - 显示文件和目录的名称和图标。
<li><tt>QFileDialog::Detail</tt> - 显示文件和目录的名称和图标以及更多的信息,比如文件的大小和修改日期。
</ul><p> 请参考<a href="#setViewMode">setViewMode</a>()。
<hr><h2>成员函数文档</h2>
<h3 class=fn><a name="QFileDialog"></a>QFileDialog::QFileDialog ( const <a href="qstring.html">QString</a> & dirName, const <a href="qstring.html">QString</a> & filter = QString::null, <a href="qwidget.html">QWidget</a> * parent = 0, const char * name = 0, bool modal = FALSE )
</h3>
构造一个父对象为<em>parent</em>、名称为<em>name</em>的文件对话框。如果<em>modal</em>为真,那么文件对话框是模式的,否则它就是非模式的。
<p> 如果<em>dirName</em>被指定,那么它将被作为对话框的工作目录,比如,当对话框出现时,它将被作为被显示的目录。如果<em>filter</em>被指定,它将会被用作对话框的文件过滤器。
<h3 class=fn><a name="QFileDialog-2"></a>QFileDialog::QFileDialog ( <a href="qwidget.html">QWidget</a> * parent = 0, const char * name = 0, bool modal = FALSE )
</h3>
构造一个父对象为<em>parent</em>、名称为<em>name</em>的文件对话框。如果<em>modal</em>为真,那么文件对话框是模式的,否则它就是非模式的。
<h3 class=fn><a name="~QFileDialog"></a>QFileDialog::~QFileDialog ()
</h3>
销毁这个文件对话框。
<h3 class=fn>void <a name="addFilter"></a>QFileDialog::addFilter ( const <a href="qstring.html">QString</a> & filter )
</h3>
添加过滤器<em>filter</em>到过滤器的列表中并且把它作为当前过滤器。
<p> <pre>
QFileDialog* fd = new QFileDialog( this );
fd-><a href="#addFilter">addFilter</a>( "Images (*.png *.jpg *.xpm)" );
fd-><a href="qdialog.html#show">show</a>();
</pre>
<p> 在上面的实例中,一个文件对话框被创建,并且文件过滤器“Images (*.png *.jpg *.xpm)”被添加并且它被设置为当前过滤器。初始过滤器“All Files (*)”仍然是有效的。
<p> <p>也可以参考<a href="#setFilter">setFilter</a>()和<a href="#setFilters">setFilters</a>()。
<h3 class=fn>void <a name="addLeftWidget"></a>QFileDialog::addLeftWidget ( <a href="qwidget.html">QWidget</a> * w )<tt> [保护]</tt>
</h3>
添加窗口部件<em>w</em>到文件对话框左侧。
<p> <p>也可以参考<a href="#addRightWidget">addRightWidget</a>()、<a href="#addWidgets">addWidgets</a>()和<a href="#addToolButton">addToolButton</a>()。
<h3 class=fn>void <a name="addRightWidget"></a>QFileDialog::addRightWidget ( <a href="qwidget.html">QWidget</a> * w )<tt> [保护]</tt>
</h3>
添加窗口部件<em>w</em>到文件对话框右侧。
<p> <p>也可以参考<a href="#addLeftWidget">addLeftWidget</a>()、<a href="#addWidgets">addWidgets</a>()和<a href="#addToolButton">addToolButton</a>()。
<h3 class=fn>void <a name="addToolButton"></a>QFileDialog::addToolButton ( <a href="qbutton.html">QButton</a> * b, bool separator = FALSE )<tt> [保护]</tt>
</h3>
把工具按钮<em>b</em>添加到文件对话框上面的一排工具按钮中。这个按钮被添加到这一行的右面。如果<em>separator</em>为真,在这行按钮中的最后一个和这个新按钮<em>b</em>之间会被插入一小块空间。
<p> <p>也可以参考<a href="#addWidgets">addWidgets</a>()、<a href="#addLeftWidget">addLeftWidget</a>()和<a href="#addRightWidget">addRightWidget</a>()。
<h3 class=fn>void <a name="addWidgets"></a>QFileDialog::addWidgets ( <a href="qlabel.html">QLabel</a> * l, <a href="qwidget.html">QWidget</a> * w, <a href="qpushbutton.html">QPushButton</a> * b )<tt> [保护]</tt>
</h3>
把指定的窗口部件添加到文件对话框的底部。标签<em>l</em>会被放置到“file name”和“file types”标签的下面。窗口部件<em>w</em>会被放置到文件类型组合框的下面。按钮<em>b</em>会被放到Cancel推动按钮的下面。
<p> <pre>
MyFileDialog::MyFileDialog( <a href="qwidget.html">QWidget</a>* parent, const char* name ) :
<a href="#QFileDialog">QFileDialog</a>( parent, name )
{
<a href="qlabel.html">QLabel</a>* label = new <a href="qlabel.html">QLabel</a>( "Added widgets", this );
<a href="qlineedit.html">QLineEdit</a>* lineedit = new <a href="qlineedit.html">QLineEdit</a>( this );
<a href="qtoolbutton.html">QToolButton</a>* toolbutton = new <a href="qtoolbutton.html">QToolButton</a>( this );
<a href="#addWidgets">addWidgets</a>( label, lineedit, toolbutton );
}
</pre>
<p> 如果你不想添加任何其中一个窗口部件,就在那个窗口部件的位置上传递0。
<p> 每一次你调用这个函数,一行新的窗口部件被添加到文件对话框的底部。
<p> <p>也可以参考<a href="#addToolButton">addToolButton</a>()、<a href="#addLeftWidget">addLeftWidget</a>()和<a href="#addRightWidget">addRightWidget</a>()。
<h3 class=fn>const <a href="qdir.html">QDir</a> * <a name="dir"></a>QFileDialog::dir () const
</h3>
返回文件对话框中显示的当前目录。
<p> <a href="qdir.html">QDir</a>指针的所有权被传递给被调用者,所以你必须在调用者不需要它的时候删除它。
<p> <p>也可以参考<a href="#setDir">setDir</a>()。
<h3 class=fn>void <a name="dirEntered"></a>QFileDialog::dirEntered ( const <a href="qstring.html">QString</a> & )<tt> [信号]</tt>
</h3>
<p> 当用户进入一个目录时,这个信号被发射。
<p> <p>也可以参考<a href="#dir">dir</a>()。
<h3 class=fn><a href="qstring.html">QString</a> <a name="dirPath"></a>QFileDialog::dirPath () const
</h3>
<p>返回文件对话框的工作目录。详细情况请参考<a href="qfiledialog.html#dirPath-prop">“dirPath”</a>属性。
<h3 class=fn>void <a name="fileHighlighted"></a>QFileDialog::fileHighlighted ( const <a href="qstring.html">QString</a> & )<tt> [信号]</tt>
</h3>
<p> 当用户高亮显示一个文件时,这个信号被发射。
<p> <p>也可以参考<a href="#fileSelected">fileSelected</a>()和<a href="#filesSelected">filesSelected</a>()。
<h3 class=fn>void <a name="fileSelected"></a>QFileDialog::fileSelected ( const <a href="qstring.html">QString</a> & )<tt> [信号]</tt>
</h3>
<p> 当用户选择一个文件时,这个信号被发射。
<p> <p>也可以参考<a href="#filesSelected">filesSelected</a>()、<a href="#fileHighlighted">fileHighlighted</a>()和<a href="#selectedFile-prop">selectedFile</a>。
<h3 class=fn>void <a name="filesSelected"></a>QFileDialog::filesSelected ( const <a href="qstringlist.html">QStringList</a> & )<tt> [信号]</tt>
</h3>
<p> 当用户在<em>ExistingFiles</em>模式下选择一个或多个文件时,这个信号被发射。
<p> <p>也可以参考<a href="#fileSelected">fileSelected</a>()、<a href="#fileHighlighted">fileHighlighted</a>()和<a href="#selectedFiles-prop">selectedFiles</a>。
<h3 class=fn>void <a name="filterSelected"></a>QFileDialog::filterSelected ( const <a href="qstring.html">QString</a> & )<tt> [信号]</tt>
</h3>
<p> 当用户选择一个过滤器时,这个信号被发射。
<p> <p>也可以参考<a href="#selectedFilter-prop">selectedFilter</a>。
<h3 class=fn><a href="qstring.html">QString</a> <a name="getExistingDirectory"></a>QFileDialog::getExistingDirectory ( const <a href="qstring.html">QString</a> & dir = QString::null, <a href="qwidget.html">QWidget</a> * parent = 0, const char * name = 0, const <a href="qstring.html">QString</a> & caption = QString::null, bool dirOnly = TRUE, bool resolveSymlinks = TRUE )<tt> [静态]</tt>
</h3>
这是一个返回由用户选择的已经存在的目录的方便的静态函数。
<p> <pre>
<a href="qstring.html">QString</a> s = QFileDialog::<a href="#getExistingDirectory">getExistingDirectory</a>(
"/home",
this,
"get existing directory"
"Choose a directory",
TRUE );
</pre>
<p> 这个函数创建了一个父对象为<em>parent</em>、名称为<em>name</em>的模式文件对话框。如果父对象不为0,这个对话框将被显示在它的父对象上面的中间。
<p> 对话框的工作目录被设置为<em>dir</em>,并且标题被设置为<em>caption</em>。它们当中的任何一个都可以是<a href="qstring.html#QString-null">QString::null</a>,在这种情况下,当前目录和默认标题将被分别使用。
<p> 如果<em>dirOnly</em>为真,那么只有目录被显示在文件对话框中,否则目录和文件都将被显示。
<p> 在Unix/X11下,文件对话框的通常行为是解析并跟踪符号连接。例如,如果/usr/tmp是/var/tmp的符号连接,那么在进入/usr/tmp之后,文件对话框将改变到/var/tmp。如果<em>resolveSymlinks</em>为假,文件对话框将把符号连接看作通常的目录。
<p> <p>也可以参考<a href="#getOpenFileName">getOpenFileName</a>()、<a href="#getOpenFileNames">getOpenFileNames</a>()和<a href="#getSaveFileName">getSaveFileName</a>()。
<h3 class=fn><a href="qstring.html">QString</a> <a name="getOpenFileName"></a>QFileDialog::getOpenFileName ( const <a href="qstring.html">QString</a> & startWith = QString::null, const <a href="qstring.html">QString</a> & filter = QString::null, <a href="qwidget.html">QWidget</a> * parent = 0, const char * name = 0, const <a href="qstring.html">QString</a> & caption = QString::null, <a href="qstring.html">QString</a> * selectedFilter = 0, bool resolveSymlinks = TRUE )<tt> [静态]</tt>
</h3>
这是一个返回由用户选择的已经存在的文件的方便的静态函数。如果用户按下Cancel,它返回一个零字符串。
<p> <pre>
<a href="qstring.html">QString</a> s = QFileDialog::<a href="#getOpenFileName">getOpenFileName</a>(
"/home",
"Images (*.png *.xpm *.jpg)",
this,
"open file dialog",
"Choose a file to open" );
</pre>
<p> 这个函数创建了一个父对象为<em>parent</em>、名称为<em>name</em>的模式文件对话框。如果父对象不为0,这个对话框将被显示在它的父对象上面的中间。
<p> 文件的工作目录将被设置为<em>startWith</em>。如果<em>startWith</em>包括一个文件名,这个文件将被选择。过滤器被设置为<em>filter</em>,这样只有匹配过滤器的文件才会被显示。被选择的过滤器被设置为<em>selectedFilter</em>。参数<em>startWith</em>、<em>selectedFilter</em>和<em>filter</em>可以为<a href="qstring.html#QString-null">QString::null</a>。
<p> 对话框的标题可以被设置为<em>caption</em>。如果<em>caption</em>没有被指定,那么将会有一个默认标题被使用。
<p> 在Windows和Mac OS X下,这个静态函数将使用本地文件对话框而不是QFileDialog,除非应用程序的风格被设置为本地风格以外的某种风格。
<p> 在Unix/X11下,文件对话框的通常行为是解析并跟踪符号连接。例如,如果/usr/tmp是/var/tmp的符号连接,那么在进入/usr/tmp之后,文件对话框将改变到/var/tmp。如果<em>resolveSymlinks</em>为假,文件对话框将把符号连接看作通常的目录。
<p> <p>也可以参考<a href="#getOpenFileNames">getOpenFileNames</a>(), <a href="#getSaveFileName">getSaveFileName</a>() and <a href="#getExistingDirectory">getExistingDirectory</a>().
<p>实例:<a href="qaction-application-example.html#x1068">action/application.cpp</a>、<a href="addressbook-example.html#x516">addressbook/mainwindow.cpp</a>、<a href="simple-application-example.html#x1512">application/application.cpp</a>、<a href="tutorial2-05.html#x2469">chart/chartform.cpp</a>、<a href="mdi-example.html#x2007">mdi/application.cpp</a>、<a href="qwerty-example.html#x363">qwerty/qwerty.cpp</a>和<a href="showimg-example.html#x1256">showimg/showimg.cpp</a>。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -