You can set text to be on the legend if you go to Layer Properties > Legend > Text on Symbols and either manually type in the text you want for each symbol, or use 'Set Labels from Expression' and enter the field name that will appear in your label (this works once-off, it is not dynamic). See below.
Unfortunately the label style will be the same for each symbol; the background for those labels cannot be data-defined even though it looks possible (i.e. if you have a column storing the label background colour, it cannot access that to have a different background colour for each symbol). So you cannot use that to show what the label would really look like.
One approach could be to have a layer where your data looks the way it's meant to be on the canvas, and a duplicate of that layer that isn't visible on the canvas with symbology set up purely for legend purposes.
Here is an example -
test shows the polygons styled with colours and text labels the way they're meant to be.
test_labels is a duplicate of the same data, but with a symbology that would look wrong on the canvas but is handy to use in the legend.
And here is what it looks like in a print layout - the map shows
test but the legend is of
test_labels (with the text added in the legend as seen in the first screenshot in this post).
To make the polygon symbols in the legend look longer than the default, go to the Legend Item properties > Symbol > Symbol width and height