QContactManager详解
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.";

