gpt4 book ai didi

c++ - 如何完全遍历 QStandardItemModel?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:06:56 29 4
gpt4 key购买 nike

我有一个 QStandardItemModel,它显示在 q QTreeView 中。工作正常。

为了突出显示相关行,我想突出显示其中的一些行:因此我有一个 QStringList,其中包含要突出显示的 QStandItem* 的名称。

QStringList namesToBeHighlighted = getNames();

QModelIndex in = myModel->index(0, 0);

if ( in.isValid() ) {

for (int curIndex = 0; curIndex < myModel->rowCount(in); ++curIndex) {

QModelIndex si = myModel->index(curIndex, 0, in);
QStandardItem *curItem = myModel->itemFromIndex(si);

if (curItem) {
QString curItemName = curItem->text();

if ( namesToBeHighlighted.contains(curItem->text()) ) {
curItem->setFont(highlightFont);
}
else curItem->setFont(unHighlightFont);
}
}
}

我的模型具有以下结构:
Level_1
+--> Level_11
+--> Level_12
+--> Level_13
Level_2
+--> Level_21
+--> Level_22
+--> Level_23
...

在这里,它迭代到第 11、12 和 13 级,然后停止。

最佳答案

希望对你有帮助

void forEach(QAbstractItemModel* model, QModelIndex parent = QModelIndex()) {
for(int r = 0; r < model->rowCount(parent); ++r) {
QModelIndex index = model->index(r, 0, parent);
QVariant name = model->data(index);
qDebug() << name;
// here is your applicable code
if( model->hasChildren(index) ) {
forEach(model, index);
}
}
}

QStandardItemModel model;
QStandardItem* parentItem = model.invisibleRootItem();
for (int i = 0; i < 4; ++i) {
QStandardItem *item = new QStandardItem(QString("item %0").arg(i));
for (int j = 0; j < 5; ++j) {
item->appendRow(new QStandardItem(QString("item %0%1").arg(i).arg(j)));
}
parentItem->appendRow(item);
parentItem = item;
}
forEach(&model);

关于c++ - 如何完全遍历 QStandardItemModel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33124903/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com