×
Namespaces

Variants
Actions
(Difference between revisions)

QContactManager详解

From Nokia Developer Wiki
Jump to: navigation, search
max.chen (Talk | contribs)
(Created page with 'Category:Qt Mobility QContactManager提供了访问和联系人相关信息的接口。 === 构造缺省的QContactManager === 对于大多数用户来说,他们仅仅是…')
 
max.chen (Talk | contribs)
Line 2: Line 2:
 
QContactManager提供了访问和联系人相关信息的接口。
 
QContactManager提供了访问和联系人相关信息的接口。
  
=== 构造缺省的QContactManager ===
+
=== 获得缺省的QContactManager ===
 
对于大多数用户来说,他们仅仅是想获取系统联系人的一些相关信息,那么系统缺省的QContactManager就足以满足他们的要求了。构造缺省的QContactManager非常简单,代码如下:
 
对于大多数用户来说,他们仅仅是想获取系统联系人的一些相关信息,那么系统缺省的QContactManager就足以满足他们的要求了。构造缺省的QContactManager非常简单,代码如下:
  
Line 9: Line 9:
 
</code>
 
</code>
  
在文章[[通过Qt Mobility扩展JavaScript功能]]中的[[示例:Wrtwrapper.zip]]就是使用这种方法构造的。
+
在文章[[通过Qt Mobility扩展JavaScript功能]]中的[[File:Wrtwrapper.zip]]就是使用这种方法构造的。
 +
 
 +
=== 获得特定的QContactManager ===
 +
当用户需要时,可以通过参数来获得特定的QContactManager。
 +
 
 +
在例子 QWhoWhere 中就是采用的这种方式:
 +
 
 +
<code cpp>
 +
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
 +
    }
 +
}
 +
</code>
 +
 
 +
在 [http://www.forum.nokia.com/info/sw.nokia.com/id/d2d20764-8668-48b3-a6ec-35da2cb5d82c/Qt_QWhoWhere_Example_v1_1_en.zip.html  这里 ] 可以找到QWhoWhere 的相关信息和源代码。
 +
 
 +
=== 获得全部QContactManager列表 ===
 +
通过QContactManager的静态方法availableManagers ():
 +
<code cpp>
 +
QStringList QContactManager::availableManagers () [static]
 +
</code>
 +
可以返回当前系统中所有支持的ContactManager。让后可以通过上面提到的方法构造QContactManager的实例。或者通过静态方法:
 +
<code cpp>
 +
QContactManager * QContactManager::fromUri ( const QString & managerUri, QObject * parent = 0 ) [static]
 +
</code>
 +
来获取QContactManager对象的一个实例。
 +
 
 +
在Qt Mobility附带的例子samplephonebook[[File:Samplephonebook.zip]]中使用的就是这种方法。
 +
 
 +
=== QContactManager的使用 ===
 +
我们无论使用何种发放获得了QContactManager 的实例,都是为了对联系人进行操作。QContactManager 提供了一组方法对联系人进行增删改查的操作。下面这段代码演示了如何查询联系人的方法:
 +
<code cpp>
 +
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;
 +
}
 +
</code>
 +
 
 +
另外,QContactManager 还提供了一组方法,用来查询一个QContactManager 实例是否具备某些能力或功能,例如:
 +
 
 +
<code cpp>
 +
    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.";
 +
</code>

Revision as of 19:21, 9 January 2011

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