Qt之QTemporaryDir用法(创建临时目录)

概述

在 Qt 开发中,有时候会要创建一个临时目录,用于存储一些临时文件,在用完过后又要删除该目录,这个逻辑自己实现起来并不复杂,多写几行代码就搞定了,但是这里要说的是更简单的用法QTemporaryDir。

QTemporaryDir

QTemporaryDir用于安全地创建唯一的临时目录。目录本身是由构造函数创建的。临时目录的名称保证是唯一的(即保证不覆盖现有目录),并且在销毁QTemporaryDir对象后,该目录随后将被删除。目录名称是自动生成的,或者是基于模板创建的,该模板被传递给QTemporaryDir的构造函数。

用法

// Within a function/method...
QTemporaryDir dir;
if (dir.isValid()) {
    // dir.path() returns the unique directory path
}
// The QTemporaryDir destructor removes the temporary directory
// as it goes out of scope.

注意,在创建对象后一定要使用isValid()来检查创建临时目录是否有效。不要使用exists(),因为默认构造的QDir代表当前存在的目录。

通过调用path()可以找到临时目录的路径。

成员函数

  • QString errorString() const
    如果isValid()返回false,则此函数返回错误字符串,该错误字符串解释了为什么创建临时目录失败。否则,这个函数返回一个空字符串。

  • QString filePath(const QString &fileName) const
    返回临时目录中文件的路径名称。不检查文件是否确实存在于目录中。冗余多重分隔符或“。” 和fileName中的“..”目录不会被删除。

  • bool isValid() const
    判断生成的临时目录是否有效。

  • QString path() const
    返回临时目录的路径。如果无法创建QTemporaryDir,则为空。

  • bool remove()
    删除临时目录,包括其所有内容,并返回删除状态。

  • void setAutoRemove(bool b)
    如果b为真,则将QTemporaryDir设置为自动删除模式。
    自动删除模式默认开启。

示例

通过一个简单的示例来看一下效果。

m_pBtn = new QPushButton("click me",this);
m_pBtn->resize(100,70);
m_pBtn->move(200,200);
connect(m_pBtn,&QPushButton::clicked,this,[=](){
   QTemporaryDir dir;
   if(dir.isValid()){
      qDebug() << "temp dir = " << dir.path();
   }
});

创建一个按钮,每次点击按钮后创建于一个临时目录。结果如下:

temp dir =  "/var/folders/85/5wz9791x1kd0c_t53kk562_m0000gn/T/QFileSystemWatcherTest-KiGg4g"
temp dir =  "/var/folders/85/5wz9791x1kd0c_t53kk562_m0000gn/T/QFileSystemWatcherTest-b1BFXX"
temp dir =  "/var/folders/85/5wz9791x1kd0c_t53kk562_m0000gn/T/QFileSystemWatcherTest-U8U51n"

可以看到每次创建的临时目录都是不同的。

猜你喜欢

转载自blog.csdn.net/luoyayun361/article/details/80359046