×
Namespaces

Variants
Actions
(Difference between revisions)

QContactManager详解

From Nokia Developer Wiki
Jump to: navigation, search
hamishwillee (Talk | contribs)
m (Hamishwillee - Bot update of Template:ArticleMetaData)
hamishwillee (Talk | contribs)
m (Hamishwillee - Addition to article of: Category:MeeGo Category:Symbian. (Add platform categories))
Line 99: Line 99:
 
</code>
 
</code>
  
[[Category:Lang-Chinese]]
+
[[Category:Lang-Chinese]][[Category:MeeGo]] [[Category:Symbian]]

Revision as of 09:52, 15 February 2012

Article Metadata

代码示例
兼容于
平台:
Symbian

文章
max.chen 在 09 Jan 2011 创建
最后由 hamishwillee 在 15 Feb 2012 编辑

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.";
171 page views in the last 30 days.