DiagramDesigner/common/source/tools.cpp

36 lines
966 B
C++
Raw Normal View History

2025-04-30 16:29:17 +08:00
#include "tools.h"
int getLevel(QStandardItem *item) {
int level = 0;
QStandardItem *parent = item->parent();
if(parent)
{
while (parent) {
level++;
parent = parent->parent();
}
return level;
}
else{
return -1;
}
}
2025-05-16 19:20:46 +08:00
QModelIndex findIndex(const QAbstractItemModel* model, const QVariant& target,
int role, const QModelIndex& parent) {
for (int row = 0; row < model->rowCount(parent); ++row) {
QModelIndex idx = model->index(row, 0, parent); // 假设查找第0列
if (model->data(idx, role) == target) {
return idx; // 找到匹配项
}
// 递归查找子项
if (model->hasChildren(idx)) {
QModelIndex childIdx = findIndex(model, target, role, idx);
if (childIdx.isValid()) {
return childIdx;
}
}
}
return QModelIndex(); // 未找到
}