×
Namespaces

Variants
Actions
Revision as of 19:21, 9 January 2011 by max.chen (Talk | contribs)

QContactManager详解

From Nokia Developer Wiki
Jump to: navigation, search

QContactManager提供了访问和联系人相关信息的接口。

Contents

获得缺省的QContactManager

对于大多数用户来说,他们仅仅是想获取系统联系人的一些相关信息,那么系统缺省的QContactManager就足以满足他们的要求了。构造缺省的QContactManager非常简单,代码如下:

QContactManager cm; // instantiate the default manager

在文章通过Qt Mobility扩展JavaScript功能中的File:Wrtwrapper.zip就是使用这种方法构造的。

获得特定的QContactManager

当用户需要时,可以通过参数来获得特定的QContactManager。

在例子 QWhoWhere 中就是采用的这种方式:

void MainWindow::createContactManager()
{
if (!m_contactManager) {
#if defined Q_WS_HILDON || defined Q_WS_MAEMO_5
m_contactManager = new QContactManager("maemo5");
#elif defined Q_OS_SYMBIAN
m_contactManager = new QContactManager("symbian");
#endif
}
}

这里 可以找到QWhoWhere 的相关信息和源代码。

获得全部QContactManager列表

通过QContactManager的静态方法availableManagers ():

QStringList QContactManager::availableManagers () [static]

可以返回当前系统中所有支持的ContactManager。让后可以通过上面提到的方法构造QContactManager的实例。或者通过静态方法:

QContactManager * QContactManager::fromUri ( const QString & managerUri, QObject * parent = 0 ) [static]

来获取QContactManager对象的一个实例。

在Qt Mobility附带的例子samplephonebookFile:Samplephonebook.zip中使用的就是这种方法。

QContactManager的使用

我们无论使用何种发放获得了QContactManager 的实例,都是为了对联系人进行操作。QContactManager 提供了一组方法对联系人进行增删改查的操作。下面这段代码演示了如何查询联系人的方法:

QString ContactServer::getContacts()
{
 
QContactManager cm; // instantiate the default manager
QList<QContact> allContacts = cm.contacts();
 
QString temp ="";
for (int i = 0; i < allContacts.size() && i<5 ; ++i) {
QContact aContact = allContacts.at(i) ;
 
temp += "Last name:" +aContact.detail<QContactName>().lastName ()+"<br>" +
"First name:" + aContact.detail<QContactName>().firstName () + "<br>";
}
 
return temp;
}

另外,QContactManager 还提供了一组方法,用来查询一个QContactManager 实例是否具备某些能力或功能,例如:

     QContactManager cm;
qDebug() << "The default manager for the platform is:" << cm.managerName();
qDebug() << "It" << (cm.isRelationshipTypeSupported(QContactRelationship::HasAssistant) ? "supports" : "does not support") << "assistant relationships.";
qDebug() << "It" << (cm.supportedContactTypes().contains(QContactType::TypeGroup) ? "supports" : "does not support") << "groups.";
qDebug() << "It" << (cm.hasFeature(QContactManager::MutableDefinitions) ? "supports" : "does not support") << "mutable detail definitions.";
246 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×