簡體   English   中英

在QFileSystemModel中展開某些子文件夾時,無法移動/重命名/刪除文件夾

[英]Can't move/rename/delete folder while some of its subfolders are expanded in QFileSystemModel

我正在Windows上開發一個Qt應用程序。 為了顯示特定文件夾的文件,我將QTreeView與QFileSystemModel一起使用。 到目前為止一切都很好,但我遇到了一個非常具體的問題,這讓我感到瘋狂:當我在我的應用程序中擴展了一個文件夾時,我無法對其父文件夾做任何事情。

我建立了一個小項目只是為了表明這個問題。 以下是我如何定義QFileSystemModel並將其應用於我的QTreeView:

QFileSystemModel *myModel = new QFileSystemModel;
myModel->setRootPath(myRootPath);
ui->treeView->setModel(myModel);

要舉例說明我的問題,請查看此圖片

雖然我沒有擴展“測試文件夾2”,但我可以做我想要的“測試文件夾”。 我可以通過Windows資源管理器重命名,移動甚至刪除,一切都應用到我的程序中。 但是,當我展開“測試文件夾2”時,突然我的“測試文件夾”不再可編輯。 Windows表示該文件夾“在另一個應用程序中打開”。

我相信任何人都可以用上面的三行重現這個問題,所以我不認為這是一個項目特定的問題。 有誰知道為什么會這樣?

編輯:顯然這是一個Windows唯一的問題。 剛試過linux,它工作得很好。 這是NTFS問題嗎? 有任何想法嗎?

您應該嘗試設置只讀屬性。

#include <QApplication>
#include <QTreeView>
#include <QFileSystemModel>

int main(int argc, char** args) {
    QApplication app(argc, args);
    auto myModel = new QFileSystemModel;
    myModel->setReadOnly(true);
    auto treeView = new QTreeView;
    myModel->setRootPath("C:/Temp/A");
    treeView->setModel(myModel);
    treeView->show();
    app.exec();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM