QFileDialog类

Qt 3.0.5

主页 | 所有的类 | 主要的类 | 注释的类 | 分组的类 | 函数

QFileDialog类参考

QFileDialog类提供了允许用户选择文件或者目录的对话框。 详情请见……

#include <qfiledialog.h>

继承了QDialog

所有成员函数的列表。

公有成员

公有槽

  • void setDir ( const QString & pathstr )
  • void setUrl ( const QUrlOperator & url )
  • void setFilter ( const QString & newFilter )
  • void setFilters ( const QString & filters )
  • void setFilters ( const char ** types )
  • void setFilters ( const QStringList & )

信号

静态公有函数

  • QString getOpenFileName ( const QString & startWith = QString::null, const QString & filter = QString::null, QWidget * parent = 0, const char * name = 0, const QString & caption = QString::null, QString * selectedFilter = 0, bool resolveSymlinks = TRUE )
  • QString getSaveFileName ( const QString & startWith = QString::null, const QString & filter = QString::null, QWidget * parent = 0, const char * name = 0, const QString & caption = QString::null, QString * selectedFilter = 0, bool resolveSymlinks = TRUE )
  • QString getExistingDirectory ( const QString & dir = QString::null, QWidget * parent = 0, const char * name = 0, const QString & caption = QString::null, bool dirOnly = TRUE, bool resolveSymlinks = TRUE )
  • QStringList getOpenFileNames ( const QString & filter = QString::null, const QString & dir = QString::null, QWidget * parent = 0, const char * name = 0, const QString & caption = QString::null, QString * selectedFilter = 0, bool resolveSymlinks = TRUE )
  • void setIconProvider ( QFileIconProvider * provider )
  • QFileIconProvider * iconProvider ()

属性

  • bool contentsPreview - 文件对话框是否提供当前选择文件的内容预览
  • QString dirPath - 文件对话框的工作目录 (只读)
  • bool infoPreview - 文件对话框是否提供当前选择文件的信息预览
  • Mode mode - 文件对话框的模式
  • PreviewMode previewMode - 文件的对话框的预览模式
  • QString selectedFile - 选择的文件的名称 (只读)
  • QStringList selectedFiles - 选择的文件的列表 (只读)
  • QString selectedFilter - 文件对话框中用户选择文件的过滤器 (只读)
  • bool showHiddenFiles - 文件对话框中隐藏文件是否显示
  • ViewMode viewMode - 文件对话框的视图模式

保护成员


详细描述

QFileDialog类提供了允许用户选择文件或者目录的对话框。

QFileDialog类允许用户在它们的文件系统上遍历来选择一个或多个文件或目录。

最简单的方式是使用静态函数来创建一个QFileDialog。在Windows上,这些静态函数将调用本地Windows文件对话框并且在Mac OS X上,这些静态函数将调用本地Mac OS X文件对话框。

    QString s = QFileDialog::getOpenFileName(
                    "/home",
                    "Images (*.png *.xpm *.jpg)",
                    this,
                    "open file dialog"
                    "Choose a file" );
  

在上面的实例中,一个模式对话框被使用静态函数来创建。开始目录被设置为“/home”。文件过滤器被设置为“Images (*.png *.xpm *.jpg)”。文件对话框的父对象被设置为this并且它被给定一个标识名称——“open file dialog”。文件对话框上面的标题被设置为“Choose a file”。

你可以不使用静态函数创建你自己的QFileDialog。通过调用setMode(),你可以设置可以从QFileDialog返回什么。

    QFileDialog* fd = new QFileDialog( this, "file dialog", TRUE );
    fd->setMode( QFileDialog::AnyFile );
  

在上面的实例中,文件对话框的模式被设置为AnyFile,也就是说用户可以设置任何文件或者甚至指定一个不存在的文件。这个模式对于创建一个“File Save As”文件对话框。如果用户必须选择存在的文件,请使用ExistingFile,或者如果可以选择目录,请使用Directory。(模式的完整列表请参考QFileDialog::Mode枚举变量。)

你可以通过mode()重新得到对话框的模式。也可以使用setFilter()来设置对话框的文件过滤器。

    fd->setFilter( "Images (*.png *.xpm *.jpg)" );
  

在上面的实例中,过滤器被设置为“Images (*.png *.xpm *.jpg)”,这也就是说只有扩展名为pngxpmjpg的文件可以被显示在QFileDialog中。你可以使用setFilters()来设置几个过滤器并且使用addFilter()来添加额外的过滤器。使用setSelectedFilter()来选择你给定的其中一个作为文件对话框默认过滤器。只用用户改变过滤器,filterSelected()信号就被发射。

文件对话框有两种视图模式,QFileDialog::List可以简单地列出文件和目录名称并且QFileDialog::Detail会在旁边显示额外的信息,例如,文件大小。

    fd->setViewMode( QFileDialog::Detail );
  

在创建你自己的文件对话框时最后需要的最后重要的函数是selectedFile()。

    QString fileName;
    if ( fd->exec() == QDialog::Accepted )
        fileName = fd->selectedFile();
  

在上面的实例中,模式对话框被创建并被显示。如果用户点击OK,然后他们选择的文件被放入fileName中。

如果你使用ExistingFiles模式,那么你将需要使用selectedFiles()在一个QStringList中返回选择的文件。

对话框工作目录可以使用setDir()来设置。隐藏文件的显示控制可以使用setShowHiddenFiles()。对话框可以被强制使用rereadDir()重新读取目录并且使用resortDir()来重新排列目录。可以使用selectAll()来选择当前目录下的所有文件。

创建和使用预览窗口部件

QFileDialog中使用两种预览窗口部件:内容预览窗口部件和信息预览窗口部件。它们的创建和使用方法相同,除了函数名不同以外,例如,setContentsPreview()和setInfoPreview()。

预览窗口部件被放置在QFileDialog中,让用户能够看到文件的内容或者有关文件的信息。

    class Preview : public QLabel, public QFilePreview
    {
    public:
        Preview( QWidget *parent=0 ) : QLabel( parent ) {}

        void previewUrl( const QUrl &u )
        {
            QString path = u.path();
            QPixmap pix( path );
            if ( pix.isNull() )
                setText( "This is not a pixmap" );
            else
                setPixmap( pix );
        }
    };
  

在上面的代码段中,我们创建一个继承与QLabelQFilePreview的预览窗口部件。文件预览窗口部件必须从QFilePreview继承。

在这个类中我们重新实现了QFilePreview::previewUrl(),这是我们决定当文件被选择时发生什么。在上面的实例中,如果它是有效的像素映射,我们只是显示文件的预览。这里是文件对话框如何使用预览窗口部件的:

    Preview* p = new Preview;

    QFileDialog* fd = new QFileDialog( this );
    fd->setContentsPreviewEnabled( TRUE );
    fd->setContentsPreview( p, p );
    fd->setPreviewMode( QFileDialog::Contents );
    fd->show();
  

第一行创建了我们的预览窗口部件的实例。然后我们创建我们的文件对话框并且调用setContentsPreviewEnabled( TRUE ),这告诉文件对话框预览当前选择文件的内容。然后我们调用setContentsPreview()——注意我们传递同样的预览窗口部件两次。最后,在显示文件对话框之前,我们调用setPreviewMode()来设置Contents为用户选择文件的预览模式来显示内容预览。

如果你创建另一个预览窗口部件来显示有关文件的信息,那么像内容预览窗口部件一样的方式来创建它并且调用setInfoPreviewEnabled()和setInfoPreview()。然后用户将能够在两种预览模式中切换。

有关创建QFilePreview窗口部件的更多信息,请参考QFilePreview

也可以参考对话框类


成员类型文档

QFileDialog::Mode

这个枚举变量用来表明用户可以在文件对话框中选择什么,也就是如果用户点击OK,这个对话框返回什么。

  • QFileDialog::AnyFile - 文件名称,不论是否存在。
  • QFileDialog::ExistingFile - 一个单一存在文件的名称
  • QFileDialog::Directory - 目录名称。文件和目录都被显示。
  • QFileDialog::DirectoryOnly - 目录名称。只显示目录。
  • QFileDialog::ExistingFiles - 0个或更多个存在文件的名称。

请参考setMode()。

QFileDialog::PreviewMode

这个枚举变量描述的是文件对话框的预览模式。

  • QFileDialog::NoPreview - 没有预览被显示。
  • QFileDialog::Contents - 使用内容预览窗口部件来预览当前文件的内容。
  • QFileDialog::Info - 使用信息预览窗口部件来预览有关当前文件的信息。

请参考setPreviewMode()、setContentsPreview()和setInfoPreview()。

QFileDialog::ViewMode

这个枚举变量描述的是文件对话框的视图模式,也就是说关于每个文件都显示什么。

  • QFileDialog::List - 显示文件和目录的名称和图标。
  • QFileDialog::Detail - 显示文件和目录的名称和图标以及更多的信息,比如文件的大小和修改日期。

请参考setViewMode()。


成员函数文档

QFileDialog::QFileDialog ( const QString & dirName, const QString & filter = QString::null, QWidget * parent = 0, const char * name = 0, bool modal = FALSE )

构造一个父对象为parent、名称为name的文件对话框。如果modal为真,那么文件对话框是模式的,否则它就是非模式的。

如果dirName被指定,那么它将被作为对话框的工作目录,比如,当对话框出现时,它将被作为被显示的目录。如果filter被指定,它将会被用作对话框的文件过滤器。

QFileDialog::QFileDialog ( QWidget * parent = 0, const char * name = 0, bool modal = FALSE )

构造一个父对象为parent、名称为name的文件对话框。如果modal为真,那么文件对话框是模式的,否则它就是非模式的。

QFileDialog::~QFileDialog ()

销毁这个文件对话框。

void QFileDialog::addFilter ( const QString & filter )

添加过滤器filter到过滤器的列表中并且把它作为当前过滤器。

    QFileDialog* fd = new QFileDialog( this );
    fd->addFilter( "Images (*.png *.jpg *.xpm)" );
    fd->show();
  

在上面的实例中,一个文件对话框被创建,并且文件过滤器“Images (*.png *.jpg *.xpm)”被添加并且它被设置为当前过滤器。初始过滤器“All Files (*)”仍然是有效的。

也可以参考setFilter()和setFilters()。

void QFileDialog::addLeftWidget ( QWidget * w ) [保护]

添加窗口部件w到文件对话框左侧。

也可以参考addRightWidget()、addWidgets()和addToolButton()。

void QFileDialog::addRightWidget ( QWidget * w ) [保护]

添加窗口部件w到文件对话框右侧。

也可以参考addLeftWidget()、addWidgets()和addToolButton()。

void QFileDialog::addToolButton ( QButton * b, bool separator = FALSE ) [保护]

把工具按钮b添加到文件对话框上面的一排工具按钮中。这个按钮被添加到这一行的右面。如果separator为真,在这行按钮中的最后一个和这个新按钮b之间会被插入一小块空间。

也可以参考addWidgets()、addLeftWidget()和addRightWidget()。

void QFileDialog::addWidgets ( QLabel * l, QWidget * w, QPushButton * b ) [保护]

把指定的窗口部件添加到文件对话框的底部。标签l会被放置到“file name”和“file types”标签的下面。窗口部件w会被放置到文件类型组合框的下面。按钮b会被放到Cancel推动按钮的下面。

    MyFileDialog::MyFileDialog( QWidget* parent, const char* name ) :
        QFileDialog( parent, name )
    {
        QLabel* label = new QLabel( "Added widgets", this );
        QLineEdit* lineedit = new QLineEdit( this );
        QToolButton* toolbutton = new QToolButton( this );

        addWidgets( label, lineedit, toolbutton );
    }
  

如果你不想添加任何其中一个窗口部件,就在那个窗口部件的位置上传递0。

每一次你调用这个函数,一行新的窗口部件被添加到文件对话框的底部。

也可以参考addToolButton()、addLeftWidget()和addRightWidget()。

const QDir * QFileDialog::dir () const

返回文件对话框中显示的当前目录。

QDir指针的所有权被传递给被调用者,所以你必须在调用者不需要它的时候删除它。

也可以参考setDir()。

void QFileDialog::dirEntered ( const QString & ) [信号]

当用户进入一个目录时,这个信号被发射。

也可以参考dir()。

QString QFileDialog::dirPath () const

返回文件对话框的工作目录。详细情况请参考“dirPath”属性。

void QFileDialog::fileHighlighted ( const QString & ) [信号]

当用户高亮显示一个文件时,这个信号被发射。

也可以参考fileSelected()和filesSelected()。

void QFileDialog::fileSelected ( const QString & ) [信号]

当用户选择一个文件时,这个信号被发射。

也可以参考filesSelected()、fileHighlighted()和selectedFile

void QFileDialog::filesSelected ( const QStringList & ) [信号]

当用户在ExistingFiles模式下选择一个或多个文件时,这个信号被发射。

也可以参考fileSelected()、fileHighlighted()和selectedFiles

void QFileDialog::filterSelected ( const QString & ) [信号]

当用户选择一个过滤器时,这个信号被发射。

也可以参考selectedFilter

QString QFileDialog::getExistingDirectory ( const QString & dir = QString::null, QWidget * parent = 0, const char * name = 0, const QString & caption = QString::null, bool dirOnly = TRUE, bool resolveSymlinks = TRUE ) [静态]

这是一个返回由用户选择的已经存在的目录的方便的静态函数。

    QString s = QFileDialog::getExistingDirectory(
                    "/home",
                    this,
                    "get existing directory"
                    "Choose a directory",
                    TRUE );
  

这个函数创建了一个父对象为parent、名称为name的模式文件对话框。如果父对象不为0,这个对话框将被显示在它的父对象上面的中间。

对话框的工作目录被设置为dir,并且标题被设置为caption。它们当中的任何一个都可以是QString::null,在这种情况下,当前目录和默认标题将被分别使用。

如果dirOnly为真,那么只有目录被显示在文件对话框中,否则目录和文件都将被显示。

在Unix/X11下,文件对话框的通常行为是解析并跟踪符号连接。例如,如果/usr/tmp是/var/tmp的符号连接,那么在进入/usr/tmp之后,文件对话框将改变到/var/tmp。如果resolveSymlinks为假,文件对话框将把符号连接看作通常的目录。

也可以参考getOpenFileName()、getOpenFileNames()和getSaveFileName()。

QString QFileDialog::getOpenFileName ( const QString & startWith = QString::null, const QString & filter = QString::null, QWidget * parent = 0, const char * name = 0, const QString & caption = QString::null, QString * selectedFilter = 0, bool resolveSymlinks = TRUE ) [静态]

这是一个返回由用户选择的已经存在的文件的方便的静态函数。如果用户按下Cancel,它返回一个零字符串。

    QString s = QFileDialog::getOpenFileName(
                    "/home",
                    "Images (*.png *.xpm *.jpg)",
                    this,
                    "open file dialog",
                    "Choose a file to open" );
  

这个函数创建了一个父对象为parent、名称为name的模式文件对话框。如果父对象不为0,这个对话框将被显示在它的父对象上面的中间。

文件的工作目录将被设置为startWith。如果startWith包括一个文件名,这个文件将被选择。过滤器被设置为filter,这样只有匹配过滤器的文件才会被显示。被选择的过滤器被设置为selectedFilter。参数startWithselectedFilterfilter可以为QString::null

对话框的标题可以被设置为caption。如果caption没有被指定,那么将会有一个默认标题被使用。

在Windows和Mac OS X下,这个静态函数将使用本地文件对话框而不是QFileDialog,除非应用程序的风格被设置为本地风格以外的某种风格。

在Unix/X11下,文件对话框的通常行为是解析并跟踪符号连接。例如,如果/usr/tmp是/var/tmp的符号连接,那么在进入/usr/tmp之后,文件对话框将改变到/var/tmp。如果resolveSymlinks为假,文件对话框将把符号连接看作通常的目录。

也可以参考getOpenFileNames(), getSaveFileName() and getExistingDirectory().

实例:action/application.cppaddressbook/mainwindow.cppapplication/application.cppchart/chartform.cppmdi/application.cppqwerty/qwerty.cppshowimg/showimg.cpp

QStringList QFileDialog::getOpenFileNames ( const QString & filter = QString::null, const QString & dir = QString::null, QWidget * parent = 0, const char * name = 0, const QString & caption = QString::null, QString * selectedFilter = 0, bool resolveSymlinks = TRUE ) [静态]

这是一个返回由用户选择的已经存在的一个或多个文件的方便的静态函数。

    QStringList files = QFileDialog::getOpenFileNames(
                            "Images (*.png *.xpm *.jpg)",
                            "/home",
                            this,
                            "open files dialog"
                            "Select one or more files to open" );
  

这个函数创建了一个父对象为parent、名称为name的模式文件对话框。如果父对象不为0,这个对话框将被显示在它的父对象上面的中间。

文件的工作目录将被设置为dir。如果dir包括一个文件名,这个文件将被选择。过滤器被设置为filter,这样只有匹配过滤器的文件才会被显示。被选择的过滤器被设置为selectedFilter。参数dirselectedFilterfilter可以为QString::null

对话框的标题可以被设置为caption。如果caption没有被指定,那么将会有一个默认标题被使用。

在Windows和Mac OS X下,这个静态函数将使用本地文件对话框而不是QFileDialog,除非应用程序的风格被设置为本地风格以外的某种风格。

在Unix/X11下,文件对话框的通常行为是解析并跟踪符号连接。例如,如果/usr/tmp是/var/tmp的符号连接,那么在进入/usr/tmp之后,文件对话框将改变到/var/tmp。如果resolveSymlinks为假,文件对话框将把符号连接看作通常的目录。

注意如果你想遍历文件的列表,你应该在一个复制上进行遍历,例如:

    QStringList list = files;
    QStringList::Iterator it = list.begin();
    while( it != list.end() ) {
        myProcessing( *it );
        ++it;
    }
    

也可以参考getOpenFileName()、getSaveFileName()和getExistingDirectory()。

QString QFileDialog::getSaveFileName ( const QString & startWith = QString::null, const QString & filter = QString::null, QWidget * parent = 0, const char * name = 0, const QString & caption = QString::null, QString * selectedFilter = 0, bool resolveSymlinks = TRUE ) [静态]

这是一个返回由用户选择的已经存在的文件的方便的静态函数。这个文件不一定存在。

这个函数创建了一个父对象为parent、名称为name的模式文件对话框。如果父对象不为0,这个对话框将被显示在它的父对象上面的中间。

    QString s = QFileDialog::getSaveFileName(
                    "/home",
                    "Images (*.png *.xpm *.jpg)",
                    this,
                    "save file dialog"
                    "Choose a filename to save under" );
  

文件的工作目录将被设置为startWith。如果startWith包括一个文件名,这个文件将被选择。过滤器被设置为filter,这样只有匹配过滤器的文件才会被显示。被选择的过滤器被设置为selectedFilter。参数startWithselectedFilterfilter可以为QString::null

对话框的标题可以被设置为caption。如果caption没有被指定,那么将会有一个默认标题被使用。

在Windows和Mac OS X下,这个静态函数将使用本地文件对话框而不是QFileDialog,除非应用程序的风格被设置为本地风格以外的某种风格。

在Unix/X11下,文件对话框的通常行为是解析并跟踪符号连接。例如,如果/usr/tmp是/var/tmp的符号连接,那么在进入/usr/tmp之后,文件对话框将改变到/var/tmp。如果resolveSymlinks为假,文件对话框将把符号连接看作通常的目录。

也可以参考getOpenFileName()、getOpenFileNames()和getExistingDirectory()。

实例:action/application.cppaddressbook/mainwindow.cppapplication/application.cppchart/chartform.cppqmag/qmag.cppqwerty/qwerty.cppshowimg/showimg.cpp

QFileIconProvider * QFileDialog::iconProvider () [静态]

返回在文件对话框上当前设置的图标提供者的指针。默认情况下没有图标提供者,并且这个函数返回0。

也可以参考setIconProvider()和QFileIconProvider

bool QFileDialog::isContentsPreviewEnabled () const

如果文件对话框提供当前选择文件的内容预览,返回真,否则返回假。详细情况请参考“contentsPreview”属性。

bool QFileDialog::isInfoPreviewEnabled () const

如果文件对话框提供当前选择文件的信息预览,返回真,否则返回假。详细情况请参考“infoPreview”属性。

Mode QFileDialog::mode () const

Returns the file dialog's mode. See the "mode" property for details.

PreviewMode QFileDialog::previewMode () const

返回文件对话框的预览模式。详细情况请参考“previewMode”属性。

void QFileDialog::rereadDir ()

重新读取在文件对话框中显示的当前目录。

只有在如果目录的内容发生改变并且你想刷新文件对话框来反映这样的变化时,你才需要调用这个函数。

也可以参考resortDir()。

void QFileDialog::resortDir ()

重新排列所显示的目录。

也可以参考rereadDir()。

void QFileDialog::selectAll ( bool b )

如果b为真,那么当前目录下的所有文件都被选择,否则它们都被取消选择。

QString QFileDialog::selectedFile () const

返回被选择文件的名称。详细情况请参考“selectedFile”属性。

QStringList QFileDialog::selectedFiles () const

返回被选择文件的列表。详细情况请参考“selectedFiles”属性。

QString QFileDialog::selectedFilter () const

返回文件对话框中用户所选择的过滤器。详细情况请参考“selectedFilter”属性。

void QFileDialog::setContentsPreview ( QWidget * w, QFilePreview * preview )

设置被用于作为文件对话框显示文件内容的窗口部件为w并且使用QFilePreview preview来预览内容。

通常你需要创建一个继承QWidget和QFilePreview的预览窗口部件,所以你需要传递同一个窗口部件两次。

    class Preview : public QLabel, public QFilePreview
    {
    public:
        Preview( QWidget *parent=0 ) : QLabel( parent ) {}

        void previewUrl( const QUrl &u )
        {
            QString path = u.path();
            QPixmap pix( path );
            if ( pix.isNull() )
                setText( "This is not a pixmap" );
            else
                setPixmap( pix );
        }
    };

  //...

  int main( int argc, char** argv )
  {
    Preview* p = new Preview;

    QFileDialog* fd = new QFileDialog( this );
    fd->setContentsPreviewEnabled( TRUE );
    fd->setContentsPreview( p, p );
    fd->setPreviewMode( QFileDialog::Contents );
    fd->show();
  }
  

也可以参考contentsPreviewsetInfoPreview()和previewMode

实例:qdir/qdir.cpp

void QFileDialog::setContentsPreviewEnabled ( bool )

设置文件对话框是否提供当前选择文件的内容预览。详细情况请参考“contentsPreview”属性。

void QFileDialog::setDir ( const QDir & dir )

设置文件对话框的工作目录是dir

也可以参考dir()。

void QFileDialog::setDir ( const QString & pathstr ) [槽]

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

设置文件对话框的工作目录是pathstr

也可以参考dir()。

void QFileDialog::setFilter ( const QString & newFilter ) [槽]

设置文件对话框中使用的过滤器为newFilter

如果newFilter中包含一对包含一个或多个anything*something,由空格或者分号分隔的括号,那么只有其中被括号包含的内容会被作为过滤器。这也就是说下面这些调用方法都是相同的:

     fd->setFilter( "All C++ files (*.cpp *.cc *.C *.cxx *.c++)" );
     fd->setFilter( "*.cpp *.cc *.C *.cxx *.c++" );
     fd->setFilter( "All C++ files (*.cpp;*.cc;*.C;*.cxx;*.c++)" );
     fd->setFilter( "*.cpp;*.cc;*.C;*.cxx;*.c++" );
  

也可以参考setFilters()。

void QFileDialog::setFilters ( const QString & filters ) [槽]

设置文件对话框中使用的过滤器为filters。过滤器中的每一组必须使用;;两个分号)来分隔。

    QString types("*.png;;*.xpm;;*.jpg");
    QFileDialog fd = new QFileDialog( this );
    fd->setFilters( types );
    fd->show();
  

void QFileDialog::setFilters ( const char ** types ) [槽]

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

必须是以结束符结尾的字符串列表。

void QFileDialog::setFilters ( const QStringList & ) [槽]

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

void QFileDialog::setIconProvider ( QFileIconProvider * provider ) [静态]

设置文件对话框使用的QFileIconProviderprovider

默认没有QFileIconProvider并且QFileDialog只为每一个目录绘制一个文件夹图标,而对文件则没有图标。

也可以参考QFileIconProvidericonProvider()。

实例:showimg/main.cpp

void QFileDialog::setInfoPreview ( QWidget * w, QFilePreview * preview )

设置被用于作为文件对话框显示文件信息的窗口部件为w并且使用QFilePreview preview来预览信息。

通常你需要创建一个继承QWidget和QFilePreview的预览窗口部件,所以你需要传递同一个窗口部件两次。

    class Preview : public QLabel, public QFilePreview
    {
    public:
        Preview( QWidget *parent=0 ) : QLabel( parent ) {}

        void previewUrl( const QUrl &u )
        {
            QString path = u.path();
            QPixmap pix( path );
            if ( pix.isNull() )
                setText( "This is not a pixmap" );
            else
                setText( "This is a pixmap" );
        }
    };

  //...

  int main( int argc, char** argv )
  {
    Preview* p = new Preview;

    QFileDialog* fd = new QFileDialog( this );
    fd->setInfoPreviewEnabled( TRUE );
    fd->setInfoPreview( p, p );
    fd->setPreviewMode( QFileDialog::Info );
    fd->show();
  }

  

也可以参考setContentsPreview()、infoPreviewpreviewMode

void QFileDialog::setInfoPreviewEnabled ( bool )

设置文件对话框是否提供当前选择文件的信息预览。详细情况请参考“infoPreview”属性。

void QFileDialog::setMode ( Mode )

设置文件对话框的模式。详细情况请参考“mode”属性。

void QFileDialog::setPreviewMode ( PreviewMode m )

设置文件对话框的预览模式为m。详细情况请参考“previewMode”属性。

void QFileDialog::setSelectedFilter ( const QString & mask ) [虚]

设置文件对话框中当前选择的过滤器为文本mask中包含的第一个。

void QFileDialog::setSelectedFilter ( int n ) [虚]

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

设置文件对话框中当前选择的过滤器为过滤器列表中的第n个过滤器。

也可以参考filterSelected()、selectedFilterselectedFilesselectedFile

void QFileDialog::setSelection ( const QString & filename )

设置默认选择为filename。如果filename为绝对的,setDir()也会被调用来设置文件对话框的工作目录为filename中的目录。

实例:qdir/qdir.cpp

void QFileDialog::setShowHiddenFiles ( bool s )

设置文件对话框中隐藏文件是否被显示为s。详细情况请参考“showHiddenFiles”属性。

void QFileDialog::setUrl ( const QUrlOperator & url ) [槽]

设置文件对话框的工作目录为url指定的目录。

也可以参考url()。

void QFileDialog::setViewMode ( ViewMode m )

设置文件对话框的视图模式为m。详细情况请参考“viewMode”属性。

bool QFileDialog::showHiddenFiles () const

如果文件对话框中隐藏文件被显示,返回真,否则返回假。详细情况请参考“showHiddenFiles”属性。

QUrl QFileDialog::url () const

返回文件对话框中当前工作目录的URL。

也可以参考setUrl()。

实例:network/networkprotocol/view.cpp

ViewMode QFileDialog::viewMode () const

返回文件对话框的视图模式。详细情况请参考“viewMode”属性。


属性文档

bool contentsPreview

这个属性保存的是文件对话框是否提供当前选择文件的内容预览。

默认为假。

也可以参考setContentsPreview()和infoPreview

通过setContentsPreviewEnabled()设置属性值并且通过isContentsPreviewEnabled()来获得属性值。

QString dirPath

这个属性保存的是文件对话框的工作目录。

通过dirPath()来获得属性值。

也可以参考dir()和setDir()。

bool infoPreview

这个属性保存的是文件对话框是否提供当前选择文件的信息预览。

默认为假。

通过setInfoPreviewEnabled()设置属性值并且通过isInfoPreviewEnabled()来获得属性值。

Mode mode

这个属性保存的是文件对话框的模式。

默认模式为ExistingFile

通过setMode()设置属性值并且通过mode()来获得属性值。

PreviewMode previewMode

这个属性保存的是文件的对话框的预览模式。

如果你设置这个模式为NoPreview之外的模式,你必须使用setInfoPreview()或者setContentsPreview()来设置这个对话框的预览窗口部件为你的预览窗口部件并且使用setInfoPreviewEnabled()或setContentsPreviewEnabled()来让预览窗口部件生效。

也可以参考infoPreviewcontentsPreviewviewMode

通过setPreviewMode()设置属性值并且通过previewMode()来获得属性值。

QString selectedFile

这个属性保存的是选择的文件的名称。

如果文件被选择,则selectedFile包含文件的名称和它的绝对路径,否则selectedFile为空。

也可以参考QString::isEmpty()、selectedFilesselectedFilter

通过selectedFile()来获得属性值。

QStringList selectedFiles

这个属性保存的是选择的文件的列表。

如果有一个或多个文件被选择,selectedFiles包含这些文件的名称和它们的绝对路径。如果没有文件被选择或者模式不是ExistingFiles,selectedFiles是一个空列表。

如果模式为ExistingFileDirectoryDirectoryOnly,使用selectedFile()更方便。

注意,如果你想遍历这个列表,你应该遍历它的复制,例如:

    QStringList list = myFileDialog.selectedFiles();
    QStringList::Iterator it = list.begin();
    while( it != list.end() ) {
        myProcessing( *it );
        ++it;
    }
    

也可以参考selectedFileselectedFilterQValueList::empty()。

通过selectedFiles()来获得属性值。

QString selectedFilter

这个属性保存的是文件对话框中用户选择文件的过滤器。

通过selectedFilter()来获得属性值。

也可以参考filterSelected()、selectedFilesselectedFile

bool showHiddenFiles

这个属性保存的是文件对话框中隐藏文件是否显示。

默认是假,也就是不显示隐藏文件。

通过setShowHiddenFiles()设置属性值并且通过showHiddenFiles()来获得属性值。

ViewMode viewMode

这个属性保存的是文件对话框的视图模式。

如果你设置视图模式为Detail(默认),那么你将看到文件的详细情况,除了文件名之外,还有文件的大小和这个文件最近一次被修改的日期。

如果你设置视图模式为List,那么你将只会看到文件和文件夹的列表。

请参考QFileDialog::ViewMode

通过setViewMode()设置属性值并且通过viewMode()来获得属性值。


这个文件是Qt工具包一部分。 版权所有 © 1995-2002 Trolltech。保留所有权利。


Copyright © 2002 Trolltech Trademarks 译者:Cavendish
Qt 3.0.5版