Jag tror att mitt ovanstående förslag är det mest transparenta. Man kan definiera om printf, men man måste verkligen göra det på alla ställen om man inte vill missa något.
Jag tror att du har en ofullständig bild av hur Qt (och kanske andra) ramverk är tänkta att användas. Visst kan man skriva spagettikod om man vill, men det är inte en nödvändig följd av ramverket. Visst blir det många klasser, men är väl inte nödvändigtvis en nackdel? Det är kanske ovant om man kommer från c, men om man kommer från Java är det väl inget nytt?
Och c-kod kan man använda direkt (antingen kompilera som c++ eller länka in; Qt gör inget svårare än c++ i sig).
Det håller jag däremot med om (om du med visual c++ menar win32, mfc och liknade).