Yes, you need a custom delegate. Compute the positions yourself and render the items (semi-)manually.