如何通过坐标x或坐标y对QGraphicsitem的QList进行排序?

时间:2019-04-10 18:20:53

标签: c++ qt qgraphicsscene qgraphicsitem

我正在尝试找到通过这些项目的coord.x()或coord.y()对QGraphicsitems的QList进行排序的最佳方法。我在几个月内进行了很多搜索,但仍未找到解决方案,...应该是这样的,...抱歉,我是菜鸟,...我正在努力!谢谢! (关于它应该如何的想法...)

void sortedby()
{
    QList<QGraphicsItem *> allitems = items();
    QList<QGraphicsItem *> alltypedos;
        foreach(auto item, allitems) {
        if(item->type() == chord::Type) {
           alltypedos.append(item);
        }
    }
    qSort(alltypedos.begin(), alltypedos.end(), item->x());
}

1 个答案:

答案 0 :(得分:0)

只需将:root { --background-black: #2f3640; --background-red: red; --search-box-padding: 10px; --search-box-size: 40px; } html, body { margin: 0; padding: 0; background-color: var(--background-red); } h1 { color: orange; font-family: Arial; margin-left: 1rem; } .search-box { position: absolute; top: 50%; left: 50%; transform: translate(-50%); height: var(--search-box-size); width: var(--search-box-size); background-color: var(--background-black); border-radius: 50%; padding: var(--search-box-padding); cursor: pointer; } .search-box > .fa-search { padding: var(--search-box-padding); width: 100%; height: 100%; box-sizing: border-box; border-radius: 50%; color: var(--background-red); } .search-box:hover > .fa-search { background: white; } .search-txt { position: absolute; top: var(--search-box-padding); left: calc(var(--search-box-size) + var(--search-box-padding)); border: none; outline: none; padding: 0; height: var(--search-box-size); width: 0px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; background-color: var(--background-black); color: white; font-size: 16px; transition: 0.4s width, 0.4s padding; } .search-box:hover > .search-txt{ width: 240px; padding: 0 0.75rem; } 与自定义比较功能一起使用:

std::sort
bool lessThan(QGraphicsItem * left, QGraphicsItem * right)
{
    return (left->x() < right->x());
}