1

QSystemStorageInfoQTreeViewで使用して、システムのすべてのローカルドライブとリムーバブルドライブを表示するように取り組んでいます。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;

アプリケーションを実行すると、ローカルセクションにC:、D:が表示され、リムーバブルセクションにSD_Cardが表示されます。しかし、C:ドライブまたはD:ドライブをクリックすると、その中に存在するフォルダーが表示されません。私はどこが間違っていますか?

4

0 に答える 0