summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>2015-08-02 18:45:42 +0200
committerMitch Curtis <mitch.curtis@theqtcompany.com>2015-08-07 08:02:53 +0000
commit485d039e7b8ddb150b0f9723cfb08815eb843cba (patch)
treef5b00fc2909f036956e3538c336a0f052a15ba24
parentfedb2eea6b1e42c9c6a21f772e5c50ef0747f2ba (diff)
downloadqtquickcontrols-485d039e7b8ddb150b0f9723cfb08815eb843cba.tar.gz
qtquickcontrols-485d039e7b8ddb150b0f9723cfb08815eb843cba.tar.bz2
qtquickcontrols-485d039e7b8ddb150b0f9723cfb08815eb843cba.zip
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>
-rw-r--r--examples/quick/controls/filesystembrowser/main.cpp10
-rw-r--r--examples/quick/controls/filesystembrowser/main.qml6
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)
+ }
}
}