Просто используйте std::sort
с пользовательской функцией сравнения:
bool lessThan(QGraphicsItem * left, QGraphicsItem * right)
{
return (left->x() < right->x());
}
QList<QGraphicsItem *> items;
auto* it1 = new QGraphicsRectItem(QRect(20, 10, 10, 10));
auto* it2 = new QGraphicsRectItem(QRect(20, 10, 10, 10));
auto* it3 = new QGraphicsRectItem(QRect(20, 10, 10, 10));
auto* it4 = new QGraphicsRectItem(QRect(20, 10, 10, 10));
it1->setPos(20, 0);
it2->setPos(10, 0);
it3->setPos(40, 0);
it4->setPos(15, 0);
items << it1 << it2 << it3 << it4;
std::sort(items.begin(), items.end(), lessThan);
for(QGraphicsItem * item: items)
{
qDebug() << item->pos();
}