Integrieren von SQLite mit Qt Quick

8

Ich versuche, eine SQLite-Datenbank mit QT Quick zu integrieren, aber ich kann keine Beispiele finden. Ich möchte nur auf Objekte aus einer Datenbank zugreifen können. Kennt jemand irgendwelche Beispielprogramme, mit denen ich spielen kann?

    
Wanting to learn 20.05.2013, 21:01
quelle

3 Antworten

7

Sie könnten beispielsweise QSqlQueryModel oder ein anderes SQL-Modell verwenden und es hinzufügen in den QML-Kontext und verwenden Sie es zum Beispiel in der ListView.

Erstellen Sie ein Modell

Definieren Sie die Rollennamen, die von Delegaten verwendet werden, um auf Daten nach Rollen in QtQuick-Komponenten zuzugreifen ( data method ist etwas naiv, da keine Fehlerprüfung stattfindet):

%Vor%

Fügen Sie es der QML

hinzu

Erstellen Sie eine Instanz der neu definierten Modellklasse und fügen Sie sie dem QML-Kontext hinzu

%Vor%

Binden Sie das Modell an die QML-Ansicht

Binden Sie Ihr Modell an die Eigenschaft ListViews model und verwenden Sie zuvor definierte Rollennamen, um auf die Daten im Delegaten zuzugreifen.

%Vor%

Einige Beispiellinks:

So verwenden Sie ein QSqlQueryModel in QML

QML und QSqlTableModel

    
Davor Lucic 06.06.2013, 22:36
quelle
5
Die Antwort von

rebus ist ein guter Anfang, aber ich habe mich gefragt, wie ich mich mit einer bestehenden (SQLite) Datenbank verbinden kann.

Also hier ist ein vollständiges Beispiel für Qt 5.x, keine Voraussetzungen benötigt.

Beachten Sie, dass der Code den Hashnamen der Rollennamen in SqlModel.data () und alle überflüssigen Heapzuweisungen vermeidet.

main.cpp

%Vor%

main.qml

%Vor%

resources.qrc

%Vor%

minimal-qml-sql-app.pro

%Vor%     
Kay Sarraute 17.04.2014 21:28
quelle
3

In Qt 5.3 gibt es ein Beispiel in

  

Beispiele / Qt-5.3 / Quick / Controls / Kalender

Eine interessante Anmerkung im Vergleich zu den Antworten von Rebus und Kay: Das Kalenderbeispiel macht das SqlModel mit

verfügbar
  

qmlRegisterType ()

Dies ermöglicht einen deklarativen Programmierstil: Es ist nicht notwendig, ein SqlModel in main.cpp zu instanziieren. Stattdessen deklarieren Sie es in Ihrem qml.

    
sacha 29.05.2014 18:38
quelle

Tags und Links