For Windows the answers of Pierre and ypnos are fine. I would add to change "are encouraged" into must as this is the only way to escape the dll hell. Using an installer has as disadvantage that the user installing your application needs Administrator rights. Just zipping the whole application dir and supplying users with that zip file is enough for getting it running on any Windows client computer.
For Linux see my answer on another Stackoverflow question. The solution I give works works basically on any Linux distro. You copy all your dependencies to the application dir and get your application running by starting a shell script that first sets LD_LIBRARY_PATH. If you have that script also creating a Linux desktop file your users can from then on double click that desktop file. Running your app will then be transparent to your user. Many major Linux GUI applications (like Google's chrome) are started from a desktop file. The roundabout of the script is necessary because the desktop file has the application dir in it hardcoded and you cannot predict where your users want to deploy your application. Using package managers is not that simple. In addition there are on the order of twenty different package managers for Linux.
For OSX you can try to use the Qt utility macdeployqt. We always had problems with that utility. We do it ourselves with a qmake script. You tell Qt Creator to make an app_bundle. I have described somewhere else how to digitally sign a OSX Qt app. Part of the signing requires the app to be standalone. You can read that part of my answer. If you separate the deploy script from the main pro file you can reuse that script for all your OSX applications.