class CustomItem : public QQuickPaintedItem
{
    Q_OBJECT
public slots:
    void onSizeChanged();
};

CustomItem::CustomItem(QQuickItem *parent) : QQuickPaintedItem(parent)
{
    // widthChangedシグナルを自クラスのonSizeChangedに紐付ける
    connect(this, &QQuickItem::widthChanged, this, &CustomItem::onSizeChanged);
    // マクロを使ったheightChangedの接続方法
    connect(this, SIGNAL(heightChanged()), SLOT(onSizeChanged()));
}

void CustomItem::onSizeChanged()
{
    // 親アイテムの中央に移動
    setX((parentItem()->width() - width()) / 2.0);
    setY((parentItem()->height() - height()) / 2.0);
}