本文整理汇总了C++中BookmarksItem::setItemData方法的典型用法代码示例。如果您正苦于以下问题:C++ BookmarksItem::setItemData方法的具体用法?C++ BookmarksItem::setItemData怎么用?C++ BookmarksItem::setItemData使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BookmarksItem
的用法示例。
在下文中一共展示了BookmarksItem::setItemData方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: setData
bool BookmarksModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
BookmarksItem *bookmark = dynamic_cast<BookmarksItem*>(itemFromIndex(index));
if (!bookmark)
{
return QStandardItemModel::setData(index, value, role);
}
if (role == UrlRole && value.toUrl() != index.data(UrlRole).toUrl())
{
const QUrl oldUrl = Utils::normalizeUrl(index.data(UrlRole).toUrl());
const QUrl newUrl = Utils::normalizeUrl(value.toUrl());
if (!oldUrl.isEmpty() && m_urls.contains(oldUrl))
{
m_urls[oldUrl].removeAll(bookmark);
if (m_urls[oldUrl].isEmpty())
{
m_urls.remove(oldUrl);
}
}
if (!newUrl.isEmpty())
{
if (!m_urls.contains(newUrl))
{
m_urls[newUrl] = QList<BookmarksItem*>();
}
m_urls[newUrl].append(bookmark);
}
}
else if (role == KeywordRole && value.toString() != index.data(KeywordRole).toString())
{
const QString oldKeyword = index.data(KeywordRole).toString();
const QString newKeyword = value.toString();
if (!oldKeyword.isEmpty() && m_keywords.contains(oldKeyword))
{
m_keywords.remove(oldKeyword);
}
if (!newKeyword.isEmpty())
{
m_keywords[newKeyword] = bookmark;
}
}
else if (m_mode == NotesMode && role == DescriptionRole)
{
const QString title = value.toString().section(QLatin1Char('\n'), 0, 0).left(100);
setData(index, ((title == value.toString().trimmed()) ? title : title + QStringLiteral("…")), TitleRole);
}
bookmark->setItemData(value, role);
switch (role)
{
case TitleRole:
case UrlRole:
case DescriptionRole:
case IdentifierRole:
case TypeRole:
case KeywordRole:
case TimeAddedRole:
case TimeModifiedRole:
case TimeVisitedRole:
case VisitsRole:
emit bookmarkModified(bookmark);
emit modelModified();
break;
}
return true;
}