在这篇文章里,我来介绍如何在Ubuntu OS上上面读取电话本的信息。
import QtQuick 2.0 import Ubuntu.Components 0.1 import "components" import QtContacts 5.0 import Ubuntu.Components.ListItems 0.1 as ListItem /*! \brief MainView with a Label and Button elements. */ MainView { // objectName for functional testing purposes (autopilot-qt5) objectName: "mainView" // Note! applicationName needs to match the "name" field of the click manifest applicationName: "com.ubuntu.developer.liu-xiao-guo.contact1" /* This property enables the application to change orientation when the device is rotated. The default is false. */ //automaticOrientation: true // Removes the old toolbar and enables new features of the new header. useDeprecatedToolbar: false width: units.gu(100) height: units.gu(75) Page { title: i18n.tr("Contact1") ContactModel { id: contactModel manager: "galera" } ListView { id: contactView anchors { left: parent.left right: parent.right top: parent.top bottom: buttons.bottom } model: contactModel delegate: ListItem.Subtitled { text: contact.name.firstName subText: contact.phoneNumber.number } } } }
ContactModel { id: contactModel manager: "galera" }
Fail to connect with service: QDBusError("org.freedesktop.DBus.Error.AccessDenied", "An AppArmor policy prevents this sender from sending this message to this recipient, 0 matched rules; type="method_call", sender=":1.119" (uid=32011 pid=20604 comm="/usr/lib/arm-linux-gnueabihf/qt5/bin/qmlscene $@ m") interface="org.freedesktop.DBus.Introspectable" member="Introspect" error name="(unset)" destination="com.canonical.pim" (uid=32011 pid=3057 comm="/usr/lib/arm-linux-gnueabihf/address-book-service/")")
ContactModel { id: favouritesContactsModel manager: "galera" sortOrders: [ SortOrder { id: sortOrder detail: ContactDetail.Name field: Name.FirstName direction: Qt.AscendingOrder } ] fetchHint: FetchHint { detailTypesHint: [ContactDetail.Avatar, ContactDetail.Name, ContactDetail.PhoneNumber] } filter: DetailFilter { id: favouritesFilter detail: ContactDetail.Favorite field: Favorite.Favorite value: true matchFlags: DetailFilter.MatchExactly } onErrorChanged: { if (error) { busyIndicator.busy = false contactListView.error(error) } } }
ListView { id: contactView anchors.fill:parent model: root.showFavourites ? favouritesContactsModel : contactModel delegate: ListItem.Subtitled { text: contact.name.firstName subText: contact.phoneNumber.number } }我们可以看到我们的一个被设为favorite的contact被列举出来了。