diff options
author | Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com> | 2015-08-02 18:45:42 +0200 |
---|---|---|
committer | Mitch Curtis <mitch.curtis@theqtcompany.com> | 2015-08-07 08:02:53 +0000 |
commit | 485d039e7b8ddb150b0f9723cfb08815eb843cba (patch) | |
tree | f5b00fc2909f036956e3538c336a0f052a15ba24 /examples | |
parent | fedb2eea6b1e42c9c6a21f772e5c50ef0747f2ba (diff) | |
download | qtquickcontrols-485d039e7b8ddb150b0f9723cfb08815eb843cba.tar.gz |
filesystembrowser: Improve example by exposing model roles
This is one of the biggest API shortcomings we currently
have when exposing C++ models to QML. The least we can do
is make our examples more readable, and hint the users how
to make their apps a bit better.
Change-Id: I25f51ef393bbd0c9bf7bab48b705a672881d80c1
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
Diffstat (limited to 'examples')
-rw-r--r-- | examples/quick/controls/filesystembrowser/main.cpp | 10 | ||||
-rw-r--r-- | examples/quick/controls/filesystembrowser/main.qml | 6 |
2 files changed, 13 insertions, 3 deletions
diff --git a/examples/quick/controls/filesystembrowser/main.cpp b/examples/quick/controls/filesystembrowser/main.cpp index 1322bc49..ac24bada 100644 --- a/examples/quick/controls/filesystembrowser/main.cpp +++ b/examples/quick/controls/filesystembrowser/main.cpp @@ -88,16 +88,18 @@ static inline QString sizeString(const QFileInfo &fi) } class DisplayFileSystemModel : public QFileSystemModel { + Q_OBJECT public: explicit DisplayFileSystemModel(QObject *parent = Q_NULLPTR) : QFileSystemModel(parent) {} - enum { + enum Roles { SizeRole = Qt::UserRole + 4, DisplayableFilePermissionsRole = Qt::UserRole + 5, LastModifiedRole = Qt::UserRole + 6, - UrlStringRole = Qt::UserRole + 7 // 263 + UrlStringRole = Qt::UserRole + 7 }; + Q_ENUM(Roles) QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE { @@ -133,6 +135,8 @@ int main(int argc, char *argv[]) QApplication app(argc, argv); QQmlApplicationEngine engine; + qmlRegisterUncreatableType<DisplayFileSystemModel>("io.qt.examples.quick.controls.filesystembrowser", 1, 0, + "FileSystemModel", "Cannot create a FileSystemModel instance."); QFileSystemModel *fsm = new DisplayFileSystemModel(&engine); fsm->setRootPath(QDir::homePath()); fsm->setResolveSymlinks(true); @@ -142,3 +146,5 @@ int main(int argc, char *argv[]) return app.exec(); } + +#include "main.moc" diff --git a/examples/quick/controls/filesystembrowser/main.qml b/examples/quick/controls/filesystembrowser/main.qml index b85002d5..6e79ca61 100644 --- a/examples/quick/controls/filesystembrowser/main.qml +++ b/examples/quick/controls/filesystembrowser/main.qml @@ -41,6 +41,7 @@ import QtQuick 2.2 import QtQuick.Controls 1.5 import QtQml.Models 2.2 +import io.qt.examples.quick.controls.filesystembrowser 1.0 ApplicationWindow { visible: true @@ -120,6 +121,9 @@ ApplicationWindow { resizable: true } - onActivated : Qt.openUrlExternally(fileSystemModel.data(index, 263)) + onActivated : { + var url = fileSystemModel.data(index, FileSystemModel.UrlStringRole) + Qt.openUrlExternally(url) + } } } |