Auf dieser Seite

Qt Quick Controls - Kontaktliste

Eine QML-App, die „ Qt Quick Controls “ und eine C++-Klasse nutzt, die eine einfache Kontaktliste implementiert.

Das Beispiel „Kontaktliste“ zeigt, wie ein C++-Backend so integriert wird, dass es mit dem „ Qt Quick Designer“ kompatibel ist. Für die deklarativen Teile der Benutzeroberfläche werden .ui.qml-Dateien verwendet, die visuell im „ Qt Quick Designer“ bearbeitet werden können.

Anwendung zur Verwaltung von Kontaktlisten mit Namen und Adressen

C++-Backend

Die Kontaktlisten-Anwendung ermöglicht es dem Benutzer, Kontakte hinzuzufügen, zu bearbeiten und zu entfernen. Die eigentliche Implementierung erfolgt in C++ und wird als „ QAbstractListModel “ bereitgestellt.

Die C++-Klasse „ContactModel“ wird unter einem Namespace registriert und später von „MainForm.ui.qml“ importiert und instanziiert. Weitere Informationen zum Registrieren von C++-Klassen als QML-Typen finden Sie unter „Definieren von QML-Typen aus C++“.

#include <QtQml/qqml.h>
...
qmlRegisterType<ContactModel>("Backend", 1, 0, "ContactModel");
...

Designer-Unterstützung

Im Unterverzeichnis „designer“ erstellen wir ein Plugin, das das „ContactModel“ im „ Qt Quick Designer“ ersetzt. Damit dies funktioniert, fügen wir die folgende Zeile zu „contactlist.pro“ hinzu.

QML_DESIGNER_IMPORT_PATH = $$PWD/designer

Da der „ Qt Quick “-Designer die C++-Klasse „ContactModel“ nicht instanziieren kann, definieren wir ein Mockup mithilfe von „ ListModel “. Dadurch wird sichergestellt, dass die „ ListView “, die das Modell verwendet, im „ Qt Quick “-Designer etwas anzeigt.

Ausführen des Beispiels

Sie können das Beispiel wie folgt ausführen:

Beispielprojekt @ code.qt.io

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.