This is how I set up basically the same functionality you’re going for, the only differences being this is a text list without images and is only the single column. just switch out the name for a texture 2d and you should be all good.
Edit: I just realised you’re not casting to your grid slot class after creating the slot widget, i’m reasonably sure what’s happening here is you’re trying to tell your slot widget to decide its position, which it can’t do, you need to get the reference to the grid itself and set the slot widget as the content.
So in summary, you should be able to keep everything you have as-is, but with the addition of a cast to your grid panel class (see below for example).
If that doesn’t work just do it like I have below.

