QModelIndex() 从哪里来 seekRoot.parent() != QModelIndex();
Where does QModelIndex() come from in seekRoot.parent() != QModelIndex();
在 Qt 帮助中,Model/View 教程 - 3.2 使用选择中有一个示例。资源码在Qt\Qt5.9.1\Examples\Qt-5.9.1\widgets\tutorials\modelview_selections.
我无法理解 while(seekRoot.parent() != QModelIndex())
中的 QModelIndex() 是什么。
看起来像是QModelIndex的构造函数,但是这里有什么用呢?它 return 是一个新的空模型索引?或者它是 MainWindow 的一个函数?好像不可能。
它来自哪里? return 值是多少?
void MainWindow::selectionChangedSlot(const QItemSelection & /*newSelection*/, const QItemSelection & /*oldSelection*/)
{
//get the text of the selected item
const QModelIndex index = treeView->selectionModel()->currentIndex();
QString selectedText = index.data(Qt::DisplayRole).toString();
//find out the hierarchy level of the selected item
int hierarchyLevel=1;
QModelIndex seekRoot = index;
while(seekRoot.parent() != QModelIndex())
{
seekRoot = seekRoot.parent();
hierarchyLevel++;
}
QString showString = QString("%1, Level %2").arg(selectedText)
.arg(hierarchyLevel);
setWindowTitle(showString);
}
默认构造函数 QModelIndex()
创建一个临时无效索引,与 seekRoot.parent()
调用的输出进行比较。换句话说,这个表达式检查父索引是否有效。
空的 QModelIndex()
构造函数表示无效(即不存在)QModelIndex
:
Creates a new empty model index. This type of model index is used to
indicate that the position in the model is invalid.
因此 seekRoot.parent() != QModelIndex()
检查 seekRoot
是否有父项(即其父项不无效)。
也可以(更清楚地)写成seekRoot.parent().isValid()
(参见QModelIndex::isValid
)。
在 Qt 帮助中,Model/View 教程 - 3.2 使用选择中有一个示例。资源码在Qt\Qt5.9.1\Examples\Qt-5.9.1\widgets\tutorials\modelview_selections.
我无法理解 while(seekRoot.parent() != QModelIndex())
中的 QModelIndex() 是什么。
看起来像是QModelIndex的构造函数,但是这里有什么用呢?它 return 是一个新的空模型索引?或者它是 MainWindow 的一个函数?好像不可能。
它来自哪里? return 值是多少?
void MainWindow::selectionChangedSlot(const QItemSelection & /*newSelection*/, const QItemSelection & /*oldSelection*/)
{
//get the text of the selected item
const QModelIndex index = treeView->selectionModel()->currentIndex();
QString selectedText = index.data(Qt::DisplayRole).toString();
//find out the hierarchy level of the selected item
int hierarchyLevel=1;
QModelIndex seekRoot = index;
while(seekRoot.parent() != QModelIndex())
{
seekRoot = seekRoot.parent();
hierarchyLevel++;
}
QString showString = QString("%1, Level %2").arg(selectedText)
.arg(hierarchyLevel);
setWindowTitle(showString);
}
默认构造函数 QModelIndex()
创建一个临时无效索引,与 seekRoot.parent()
调用的输出进行比较。换句话说,这个表达式检查父索引是否有效。
空的 QModelIndex()
构造函数表示无效(即不存在)QModelIndex
:
Creates a new empty model index. This type of model index is used to indicate that the position in the model is invalid.
因此 seekRoot.parent() != QModelIndex()
检查 seekRoot
是否有父项(即其父项不无效)。
也可以(更清楚地)写成seekRoot.parent().isValid()
(参见QModelIndex::isValid
)。