From T-shirt to pillow
A three-dollar souvenir T-shirt that was never going to be worn.
It started as a three-dollar T-shirt from a street vendor in New York and it was never worn, because the person it was bought for does not wear printed shirts. He does like something soft to prop his head against in front of the television, though, so it has been reassigned.
No zip, no buttons, no fastening at all. Here is the whole thing.

Sizing
The shirt is a men’s extra small, and it took a 30 × 30 cm (12 × 12 in) cushion pad.
Work this out by laying the shirt flat over the pad before you cut anything. You want the print centred and the body of the shirt comfortably wider than the pad, the surplus is what closes the back later.

Sewing
Turn the shirt inside out, put the pad inside it, and pin along both sides right up against the pad. Take the pad out, then carry the pinning straight down to the bottom hem.
Sew with a narrow zig-zag, not a straight stitch. T-shirt jersey stretches and a straight seam does not; sew it straight and the seam puckers and the whole cushion goes wavy along the edges. The zig-zag gives with the fabric.

Trim the seam allowances back with scissors and turn it right side out.

Closing it
Put the pad in and fold the overhanging fabric, the neck end, inwards at the back.
That is it. There is no fastening, and it does not need one: cotton against cotton does not slide, so the folded flap simply stays where it is put. It has not come undone.
The print ends up on the front, the seams disappear into the edges, and the whole thing took under half an hour.