本文整理汇总了C++中QTextFrame::parentFrame方法的典型用法代码示例。如果您正苦于以下问题:C++ QTextFrame::parentFrame方法的具体用法?C++ QTextFrame::parentFrame怎么用?C++ QTextFrame::parentFrame使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QTextFrame
的用法示例。
在下文中一共展示了QTextFrame::parentFrame方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: parent
QModelIndex TextDocumentStructureModel::parent(const QModelIndex &index) const
{
kDebug(32500) << "-------------------------- index:"<<index<<m_textDocument;
if (! m_textDocument || ! index.isValid()) {
return QModelIndex();
}
Q_ASSERT(index.internalId() < uint(m_nodeDataTable.count()));
const NodeData &nodeData = m_nodeDataTable.at(index.internalId());
QTextFrame* parentFrame;
if (nodeData.type == NodeData::Frame) {
parentFrame = nodeData.frame->parentFrame();
} else {
QTextBlock block = m_textDocument->findBlockByNumber(nodeData.blockNumber);
Q_ASSERT(block.isValid());
// QTextBlock's API has no option to query the parentframe, so get it via a cursor
QTextCursor cursor(block);
parentFrame = cursor.currentFrame();
}
if (! parentFrame) {
return QModelIndex();
}
QTextFrame* grandParentFrame = parentFrame->parentFrame();
// parent is root frame?
if (! grandParentFrame) {
Q_ASSERT(parentFrame == m_textDocument->rootFrame());
return createIndex(0, 0, static_cast<quintptr>(0));
}
// find position of parentFrame
bool posFound = false;
int row = 0;
for (QTextFrame::iterator iterator = grandParentFrame->begin(); !iterator.atEnd(); ++iterator) {
if (iterator.currentFrame() == parentFrame) {
posFound = true;
break;
}
++row;
}
Q_ASSERT(posFound);Q_UNUSED(posFound);
return createIndex(row, 0, frameIndex(parentFrame));
}