This type of thing (scan QR code) is how basically all payments were done when I was recently in China, via wechat or alipay (either you show your QR code for big shops, or scan their QR code for small shops / vendors. They can just print them out if they want and hang a copy).
I found it superior to other systems I've used in basically every way. Particularly for small market stalls -- I scan their QR code, I enter how much I want to send them. They never get my details, I don't have to trust they didn't fat-finger the price. It also makes it amazingly easy to send money to friends, just scan their code and send them their share of dinner.
I would claim the main cause why it is more complicated is having VAT and KYC/AML requirements. Transactions can be much easier if you ignore the VAT requirement.
To me NFC is superior. It checks all the boxes you mentioned plus quicker / last steps
It has massive perks, especially in regions where the transaction fee or exchange fee scams run.
(Basically they have a reasonable price showing and when you pay with a credit card you see your banks charges you a huge amount. It can be as simple as in Mexico $ is used for pesos so if the merchant actually charges you USD that's 20x or so rip off).
But... This isn't mutually exclusive, why can't I set a price on my smartphone when I pay by contactless?
The other benefit is that there QR codes are bank transfers. Which have substantially less recourse and less rights for the consumer. Probably doesn't matter for a $10 sandwich but still significant.