我正在开发 Qt 应用程序,我需要在Qtreeview
. 基本上我的想法是自定义文件系统,使可移动驱动器属于一个部分,而本地驱动器属于另一个部分。我尝试使用它来实现它,QFSFileEngine
但在某种程度上我已经成功了。这是代码:
pSystemSecondaryModel = new QFileSystemModel(this);
pSystemSecondaryModel->setRootPath(QDir::currentPath());
list = QFSFileEngine::drives();
for(int i = 0; i < list.size(); i++)
{
qDebug() << list.at(i).absoluteDir();
}
m_model = new QStandardItemModel(0,0);
QList<QStandardItem *> LocalItem;
LocalItem.insert(0,new QStandardItem("Local Drives"));
LocalItem.at(0)->setEditable(false);
m_model->insertRow(0,LocalItem);
QList<QStandardItem *> RemovableItem;
RemovableItem.insert(0,new QStandardItem("Removable Drives"));
RemovableItem.at(0)->setEditable(false);
m_model->insertRow(1,RemovableItem);
for (int i = 0; i < list.count(); i++)
{
QString str = list.at(i).absolutePath();
Localchild = new QStandardItem(str);
QStandardItem* LocalparentItem = m_model->item(0,0);
Localchild->setEditable(false);
LocalparentItem->appendRow(Localchild);
}
QStandardItem* Removablechild = new QStandardItem();
QStandardItem* RemovableparentItem = m_model->item(1,0);
Removablechild->setEditable(false);
RemovableparentItem->appendRow(Removablechild);
ui->PrimTreeView->setModel(m_model);
当我运行该应用程序时,它显示本地驱动器和可移动驱动器根节点。在本地驱动器节点下,我发现所有 C:D:E: 等都是子驱动器,而可移动驱动器似乎是空的,即没有任何子驱动器。这是当前输出的场景:
- Local Drives
C:/
D:/
E:/
- Removable Drives
但是当我点击每个驱动器时,我根本看不到子目录。Windows
理想情况下,当我单击 C:/ 时,我应该能够看到Program Files
文件夹等。它完全是空的。我怎样才能实现它?请帮忙