Folderlistmodel Ressource Frage

Alles rund um die Programmierung mit Qt
Antworten
Tollmer
Beiträge: 2
Registriert: 15. August 2016 19:57

Folderlistmodel Ressource Frage

Beitrag von Tollmer »

Hallo Leute,
Ich bin relativ neu in qml und such mir heute schon den ganzen Tag nen Wolf bezüglich meines Problems.
Was ich möchte ist folgendes:
In meiner App soll ein geschossenes Foto abgespeichert werden. Das funktioniert. Er speichert dies unter /sdcard/DCIM ab.
Wenn ich jedoch nun mithilfe des Folderlistmodels mir die in dem Ordner enthaltenen Bilder anzeigen will funktioniert das nicht.
Er zeigt einfach gar nichts an, noch nichtmal ne Fehlermeldung.
Wenn ich statisch vorher in den Ressourcdateien Bilder hinzufüge werden diese auch ordnungsgemäß vom Folderlistmodell angezeigt.

Dann dacht ich mir :"Ok vll. stimmt einfach mit dem Pfad unter Android was nicht.. also auf dem Desktop kompiliert und als Pfad mal die Eigenen Bilder eingetragen.
Nun kommt die Fehlermeldung: C Protokoll unbekannt.. und das obwohl er mir den Namen jedes einzelnen Bildes zusammen mit der Fehlermeldung ausgibt .. also müsste der Pfad ja schonmal stimmen.

Eine weitere Recherche hat dann ergeben, dass diese Fehlermeldung wohl dann kommt wenn sich die Bilder NICHT in den Ressourcedateien befinden.
Aber das kann ja auch nicht Sinn der Sache sein. Denn immerhin will ich die Bilder erst noch schießen also kann ich sie nicht vorher als Ressource mitgeben^^

Meine Frage ist nun:
Kann ich überhaupt mithilfe von QML auf Pfade außerhalb der Ressourcedatei zugreifen oder erlaubt das QML einfach nicht?
Und wenn nicht, kann ich während des laufenden Programmes Dateien den Ressourcen hinzufügen?

Code: Alles auswählen

    ListView {

                 visible:  if (applicationwindow.activeWindow == 5) {true} else false

                anchors { top: menu_bar.bottom; bottom: parent.bottom; left: parent.left; right: parent.right;  }
             id: view
             width: parent.widht
             height: parent.height
             model: FolderListModel {
             nameFilters: [ "*.JPG", "*.jpg" ,"*.png","*.PNG"]
             folder: "file:///sdcard/DCIM/"`//Oder Desktop "file:///C:/Users/Tollmer/Pictures/"
             sortField: FolderListModel.Name
             }
             delegate: Image {
             source: filePath
             width: view.width
             height: view.height
             smooth: true
             }
             orientation: ListView.Horizontal
             snapMode: ListView.SnapToItem
            }
wäre echt toll wenn mir hier wer helfen könnte denn ich verzweifel so langsam und die offizielle qml Doku stiftet auch mehr Verwirrung als Nutzen diesbezüglich..

MfG
Tollmer
hilefoks
Beiträge: 144
Registriert: 13. März 2008 16:09

Re: Folderlistmodel Ressource Frage

Beitrag von hilefoks »

Moin,

wenn ich zwei Änderungen an deinem Code vornehme, dann funktioniert es bei mir. Getestet unter Windows, unter Android kann ich es gerade nicht testen:

Zunächst muss für das Image ebenfalls das Protokoll angegeben werden, hier also "file://":

Code: Alles auswählen

delegate: Image {
    source: "file://" + filePath
    width: view.width
    height: view.height
    smooth: true
}
Dann stört er sich noch an dem C:/, nehme ich das raus, funktioniert es:

Code: Alles auswählen

model: FolderListModel {
    nameFilters: [ "*.JPG", "*.jpg" ,"*.png","*.PNG"]
    folder: "file:///Users/Tollmer/Pictures/"
    sortField: FolderListModel.Name
 }
Tollmer
Beiträge: 2
Registriert: 15. August 2016 19:57

Re: Folderlistmodel Ressource Frage

Beitrag von Tollmer »

Hi, vielen Dank für deine Antwort,
Nach langem tüfteln hab ich dann schlussendlich herausgefunden, dass sich das FolderListModel scheinbar daran zu stören scheint, wenn in dem Pfad zu dem Bildordner noch weitere Ordner enthalten sind.
Hierzu gibt es ein Attribut des Folderlistmodels namens
showdirs, welches auf false gesetzt werden muss.
Ist dies getan funktioniert die Anzeige auch unter Android.
Dachte mir das könnte vielleicht noch irgendwem hilfreich sein, da ich dies nur durch "try and error" herausgefunden hab.

MfG
Tollmer
Antworten