I want to implement a file explorer list in the form of a windows form.
-
I currently implementing a file explorer similar to the Windows file explorer.
I've implemented all the features, but I couldn't implement the last remaining folder tree shape.
What I'm currently using is using QFileSystemModel, and currently I'm outputting only the driver with this.
So, in addition to the drive, I want to output more folders in the window, such as documents, videos, and photos.
I've been searching for several months, but I couldn't find a solution, and I saw a lot of advice to use a proxy model, but I'm currently too new to implement it.
I am not good at English, so I wrote it using a translator, and I hope you will be kind. -
Hi and welcome to devnet,
If I understand correctly, you want to have special folders in addition to the ones shown by QFileSystemModel. For that, you could for example implement a custom model that shows what you want and then use a proxy that combines both your custom model and the one showing your filesystem.
-
Hi and welcome to devnet,
If I understand correctly, you want to have special folders in addition to the ones shown by QFileSystemModel. For that, you could for example implement a custom model that shows what you want and then use a proxy that combines both your custom model and the one showing your filesystem.
@SGaist
Thank you for your answer, SGaist! The time is different. That's why I'm answering
From what I've explored, some people recommend using the SortproxyModel and others recommend using the AbsoluteproxyModel, so can I ask you which proxy model should I use? -
What is the AbsoluteProxyModel ?
-
@PaNi
AQSortFilterProxyModelis a specializedQAbstractProxyModelwhich provides sorting and/or filtering behaviour on the source model. If you want either/both of those then by all means use a QSFPM, if not use something else derived from QAPM, including possibly something you write yourself.From your description I'm not convinced QSFPM is relevant to your question. Sorting is not an issue you mention. Filtering is used to reduce the source model items. But you are saying (I think) you want to add additional elements over what
QFileSystemModelis supplying? So reducing is not your objective. -
@PaNi
AQSortFilterProxyModelis a specializedQAbstractProxyModelwhich provides sorting and/or filtering behaviour on the source model. If you want either/both of those then by all means use a QSFPM, if not use something else derived from QAPM, including possibly something you write yourself.From your description I'm not convinced QSFPM is relevant to your question. Sorting is not an issue you mention. Filtering is used to reduce the source model items. But you are saying (I think) you want to add additional elements over what
QFileSystemModelis supplying? So reducing is not your objective.@JonB
Thank you for contacting me, JonB. Sorry for the late reply.
Yes, that's right. However, when I searched, I was told that I had to add it using the two proxy models, maybe because I got the wrong keyword.
Currently, the drive output is successful using the QFilesystemModel, but the virtual folder should be envisioned above, just like Window File Explorer. But I understand that it is difficult to implement a Windows virtual folder.
So I think we should go in the direction of adding row and adding rootpath, but I'm a beginner, so I'm not sure how to get it out even if I'm thinking about how to design it. -
@JonB
Thank you for contacting me, JonB. Sorry for the late reply.
Yes, that's right. However, when I searched, I was told that I had to add it using the two proxy models, maybe because I got the wrong keyword.
Currently, the drive output is successful using the QFilesystemModel, but the virtual folder should be envisioned above, just like Window File Explorer. But I understand that it is difficult to implement a Windows virtual folder.
So I think we should go in the direction of adding row and adding rootpath, but I'm a beginner, so I'm not sure how to get it out even if I'm thinking about how to design it. -
-
@JonB
So I searched that way, but the qt version I am using is not supported, so I am looking for another way...crying -
@PaNi
SinceQAbstractProxyModelis available in every version of Qt I don't know what you searched. -
@JonB
Oh! Is that possible? I listened to SGaist and searched for related keywords and found a model other than QAbstractProxyModel. That's why I said that@PaNi
QAbstractProxyModelis there for you to subclass/derive from. You need to first write a class to deliver the "extra"/"virtual" nodes you want (probably deriving fromQAbstractItemModel). Then you might derive from aQAbstractProxyModelto "merge"/"combine" this model with the existingQFileSystemModel, to "augment" it for the (top-level?) nodes provided by your extra/virtual nodes, so that they are presented as a single, combined model to be used by e.g. aQTreeView. -
@PaNi
QAbstractProxyModelis there for you to subclass/derive from. You need to first write a class to deliver the "extra"/"virtual" nodes you want (probably deriving fromQAbstractItemModel). Then you might derive from aQAbstractProxyModelto "merge"/"combine" this model with the existingQFileSystemModel, to "augment" it for the (top-level?) nodes provided by your extra/virtual nodes, so that they are presented as a single, combined model to be used by e.g. aQTreeView. -
KDE has several model classes, one of which concatenates the rows of several other models.
-
KDE has several model classes, one of which concatenates the rows of several other models.
-
Support which feature ?
-
@SGaist
I'm trying to implement it in a different way because the version I'm writing is not the one that supports that feature. The proxy model is hard to access, so I'm trying to implement it using widgets.@PaNi said in I want to implement a file explorer list in the form of a windows form.:
I'm trying to implement it in a different way because the version I'm writing is not the one that supports that feature.
The question is: what feature that is not supported in Qt 5.12 are you talking about?
The proxy model is hard to access, so I'm trying to implement it using widgets.
There is little connection between "proxy models" and "widgets". It is hard to imagine what could be accessed from widgets that would resolve a need for proxy models.
-
@PaNi said in I want to implement a file explorer list in the form of a windows form.:
I'm trying to implement it in a different way because the version I'm writing is not the one that supports that feature.
The question is: what feature that is not supported in Qt 5.12 are you talking about?
The proxy model is hard to access, so I'm trying to implement it using widgets.
There is little connection between "proxy models" and "widgets". It is hard to imagine what could be accessed from widgets that would resolve a need for proxy models.
@JonB
Oh! Not in the version meant that the proxy model that combines multiple rows for the KDE model supports from version 5.13 and the widget implementation is that I can't understand the proxy model at all, so I'm only trying to build a folder tree using TreeWidget.
So we're trying to set the desired address value so that a tree can be created from a folder for that address.
But even that's not easy. -
If you want to show the structure of a particular subfolder, configure the view accordingly. There's an example of that in QFileSystemModel's details.