gpt4 book ai didi

c++ - 根据中心点最小值到最大值对 QGraphicsItems QList 进行排序

转载 作者:搜寻专家 更新时间:2023-10-31 02:16:53 24 4
gpt4 key购买 nike

如何根据 boundingRect 中心点对 QGraphicsItem 列表进行排序?我希望列表从最小 Y 值到最大 Y 值排序。

谢谢

QList<QGraphicsItem*> validItems;

foreach (QGraphicsItem* item, items) {
if (!item) continue;
if (item->type() == NexusBlockItem::Type) {
int nodeCenterY = item->pos().y() + (item->boundingRect().height()/2.0);
}
}

最佳答案

Qt 为此提供了一个很好的函数:qSort()

bool itemLess(const QGraphicsItem* item1, const QGraphicsItem* item2)
{
return item1->sceneBoundingRect().center().y() < item2->sceneBoundingRect().center.y();
}

qSort(validItems.begin(), validItems.end(), itemLess);

注意 1:您可以使用 std::sort() 而不是 qSort()

注意 2:您可以使用 functorlambda 来比较项目而不是 itemLess()功能。

注释 3:qSort()std::sort() 都使用 quicksort 算法。

编辑

vicrucann 所述,Qt 文档建议使用 std::sort() 而不是 qSort()

关于c++ - 根据中心点最小值到最大值对 QGraphicsItems QList 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36431815/

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