Qt

Qt QFileDialog类

4

帮助文档中QFileDialog类简介:

The QFileDialog class provides a dialog that allow users to select files or directories.

翻译为:QFileDialog类提供一个对话框,允许用户选择文件和目录。

在这里,设计一个小程序利用到QFileDialog类,利用其打开某些文档,显示文档的属性:

其中QFileDialog的静态成员函数有很多。

这里使用到getOpenFileName()方法。

 

getOpenFileName()方法简介:

This is a convenience static function that returns an existing file selected by the user. If the user presses Cancel, it returns a null string.

翻译为:这是一个很方便的静态函数,它返回一个被用户选择的存在的文件。如果用户按下取消,他会返回一个空的字符串。

帮助文档中getOpenFileName()方法举例:

QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),"/home",tr("Images (*.png *.xpm *.jpg)"));

这个案例,它实现的功能是:

提供一个对话框,设置对话框的标题为“Open File”,打开的路径为“/home”,提供选择的后缀名有(Images (*.png *.xpm *.jpg)”) ,获取到选中的文件的文件

并且放在fileName中。

 

这里,我们打开Qt,新建一个项目,设计一个Ui如下:

QFileDialogMainWindow

实现的功能为:

在按下打开文件pushButton的时候,会有相应的对话框供我们选择,然后我们选择相应文件,会在主Ui中显示其相应的信息

具体步骤如下:

在mainwindow.h中添加私有槽:

private slots:
    void getFileInfoSlot();//用于获取当前文件的属性信息

在我们发出相应的信息之后,作出相应的反应。

主窗口文件中添加相应的槽的内容:

void MainWindow::getFileInfoSlot(){}

第一步,当点击pushButton按钮的时候,弹出文件选择对话框,选择一个相应文件,获取到这个文件名:

QString fileName=QFileDialog::getOpenFileName(this,"打开文件",QDir::homePath());
if(fileName.isEmpty())
{
    QMessageBox::information(this,"提示","您没有选择文件");
    return;
}

得到一个文件名。

并且如果getOpenFileName()方法返回的是一个空的字符串的话,那么弹出一个消息对话框。并且返回。

 

这里,需要使用到一个新类:<QFileInfo>

在帮助文档中关于QFileInfo类有如下介绍:

The QFileInfo class provides system-independent file information.

翻译为:QFileInfo类提供系统的文件信息。

QFileInfo info(fileName);

定义一个QFileInfo类的对象info,并且在其构造函数中,传入参数fileName。这里的fileName是我们在打开对话框之后,得到的一个文件名。

注:fileName是一个带有绝对路径的文件名。

QFileInfo的构造函数中,帮助文档有如下解释:

Constructs a new QFileInfo that gives information about the given file. The file can also include an absolute or relative path.

构造一个新的QFileInfo,它包含已给文件的信息。这个文件可以包含绝对或相对路径。

然后使用:

qint64 QFileInfo::size() const

帮助文档中解释如下:

Returns the file size in bytes. If the file does not exist or cannot be fetched, 0 is returned.

翻译为:以二进制的方式返回文件的大小,如果这个文件不存在或者没有获取到,则返回0。

ui->filesizeLineEdit->setText(QString::number(info.size()));

将得到的文件的大小,转换格式之后,放在一个LineEdit中。

获取文件的创建时间:

QDateTime create = info.created();

这里利用到了QFileInfo的created()方法。

created方法的帮助文档的解释如下:

Returns the date and time when the file was created.

翻译为:但会文档的创建日期和时间。

返回之后,放在QDateTime类定义的一个对象create中。

同理将create转换格式放在另一个LineEdit中,如下:

ui->createTimeLineEdit->setText(create.toString("yyyy-MM-dd hh:mm:ss"));

这里用到了QDateTime的toString()方法,其解释如下:

Returns the datetime as a string. The format parameter determines the format of the result string.

翻译为:用字符串的方式返回时间。其参数的格式决定了返回结果的字符串的格式。

同时,在帮助文档中,提供了参考示例:

 

 

format

获取文档的最后访问时间:

这里和获取文档的创建时间类似。然后将其放在一个LineEdit中得以显示。

获取文档是否为目录:

利用QFileInfo的isDir方法,进行判断其是否为目录。

isDir的帮助文档的解释如下:

Returns true if this object points to a directory or to a symbolic link to a directory; otherwise returns false.

翻译为:如果这个对象指针指向一个目录或者指向一个目录的符号链接,那么就返回true,否则返回false.

 

槽中响应事件设计完毕,最后进行信号与槽的连接:

QObject::connect(ui->openFileButton,SIGNAL(clicked(bool)),this,SLOT(getFileInfoSlot()));
QObject::connect(ui->quitButton,SIGNAL(clicked(bool)),this,SLOT(close()));

这里有两个连接,openFileButton是打开文档的操作,与以上我们设计的槽连接。

另一个连接是退出操作,与Qt自带的close()槽相连接。

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部