内にファイルシステムを表示する必要があるQtアプリに取り組んでいQtreeview
ます。基本的に私の考えは、リムーバブルドライブが1つのセクションの下にあり、ローカルドライブが別のセクションの下にあるようにファイルシステムをカスタマイズすることです。使っ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
しかし、各ドライブをクリックすると、サブディレクトリがまったく表示されません。理想的には、C:/をクリックするとWindows
、Program Files
フォルダなどが表示されるはずです。完全に空です。どうすればそれを達成できますか?助けてください