检查目录是否为空

hig*_*141 5 qt qt4

我正在尝试检查目录是否为空.

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QDir Dir("/home/highlander/Desktop/dir");
    if(Dir.count() == 0)
    {
        QMessageBox::information(this,"Directory is empty","Empty!!!");
    }
}
Run Code Online (Sandbox Code Playgroud)

什么是检查它的正确方法,排除...

hig*_*141 23

好吧,我有办法做到这一点:)

if(QDir("/home/highlander/Desktop/dir").entryInfoList(QDir::NoDotAndDotDot|QDir::AllEntries).count() == 0)
{
    QMessageBox::information(this,"Directory is empty","Empty!!!");
}
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的方法.`<3`是一个黑客 (2认同)
  • QDir :: AllEntries对于隐藏(可能是系统)文件是不够的.你也应该检查它们. (2认同)

Mar*_* R. 6

从 Qt 5.9 开始,有bool QDir::isEmpty(...),这是更好的选择,因为它更清晰、更快,请参阅文档

相当于使用过滤器 QDir::AllEntries | count() == 0 QDir::NoDotAndDotDot,但速度更快,因为它只检查目录是否至少包含一个条目。