2013-12-13 98 views
2

QFile具有静态函数为什么QDir :: rmdir不是静态的?

bool QFile::remove (const QString & fileName) [static]

这将删除指定的文件。这很方便:我们有一个文件路径,我们使用一个命令来删除它。然而,QDir不具有这样的命令,仅这一项:

bool QDir::rmdir (const QString & dirName) const

其是非静态的且因此要求的对象。所以我被迫做了丑陋的东西像

QDir().rmdir(path)

这是令人厌恶的。我错过了什么吗?

+3

需要注意的是对一个QFile类似操作(复制,重命名,删除),创建一个对象的情况下,得到错误的详细信息(Errorstring,则())的唯一途径函数返回false,从而创建一个对象,我认为那里的最佳实践。 QDir遗失了errorString(),遗憾的是。理想情况下,它会被添加。 –

+3

这个静态QFile :: remove()函数做了什么,它创建了一个'QFile'对象,就像你使用'QDir'一样:['QFile(fileName).remove();'](https:// qt.gitorious.org/qt/qt/source/57756e72adf2081137b97f0e689dd16c770d10b1:src/corelib/io/qfile.cpp#L674)。 – thuga

回答

0

您可以派生类QDir并添加您的静态方法。

class MyQDir : public QDir { 
     // Define constructors/destructor 

     static bool remove (const QString & dirName) { 
      return QDir().rmdir(dirName); 
     } 
}; 
相关问题