While something like AutoIt of Sikuli may work - your best option would be to add an interface to QObject to allow you to interfere with its derived objects from outside the application, using something like RPC - you can then create an interface library for robotframework, which would allow you to trigger events such as button clicks, and monitor events such as widget updates.
This takes a bit more setup than using something off the shelf, but will give you a far more robust platform for running your tests - not to mention that AutoIt is Windows only AFAIK, and while Sikuli seems like a good idea, it is often a bit more hassle than it is worth to get something reliable.
Let me know if you'd like any advice on getting this sort of thing set up, as I am currently doing something similar for Unity3d.