我正在使用QSystemStorageInfo
QTreeView 显示我系统的所有本地和可移动驱动器。我编写了一个代码,其中所有驱动器(如 C:、D: 等)都在本地驱动器部分下,而 SD_Card 出现在可移动驱动器部分下。这是代码:
#include <QtSystemInfo/QSystemStorageInfo>
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);
QStringList list = m_sysStorageInfo->logicalDrives(),listremovable,listlocal;
for(int i=0; i<list.count(); i++)
{
m_dtype = m_sysStorageInfo->typeForDrive(list[i]);
if ( m_dtype == QSystemStorageInfo::RemovableDrive)
{
listremovable<<list[i];
qDebug()<<listremovable;
}
else
{
listlocal<<list[i];
qDebug()<<listlocal;
}
}
for (int i = 0; i < listlocal.count(); i++)
{
QString myString = listlocal.at(i);
QStandardItem* Localchild = new QStandardItem(myString);
QStandardItem* LocalparentItem = m_model->item(0,0);
Localchild->setEditable(false);
LocalparentItem->appendRow(Localchild);
}
for (int i = 0; i < listremovable.count(); i++)
{
QString myString = listremovable.at(i);
QStandardItem* Removablechild = new QStandardItem(myString);
Removablechild->setEditable(false);
QStandardItem* RemovableparentItem = m_model->item(0,0);
RemovableparentItem->appendRow(Removablechild);
}
ui->PrimTreeView->setModel(m_model);
头文件:
QSystemStorageInfo *m_sysStorageInfo;
QSystemStorageInfo::DriveType m_dtype;
当我运行该应用程序时,它会在我的本地部分和可移动部分下的 SD_Card 中给出 C:、D:。但是当我单击 C: 驱动器或 D: 驱动器时,它不会显示其中存在的文件夹。我哪里错了???