To put it bluntly: you don't have threads. Or more precisely your StatusThread dies after setTaskBar has been called and because you setup a QTimer that part will work, at least partially because you're making the main thread sleep for a long time so that won't make your GUI smooth.
You should implement a real worker object doing the checkBatteryLevel work and have that object emit new data for the MainWindow to consume.
As for your second thread it's even worse, you're creating an infinite blocking loop that will block the Qt event loop so there's nothing that can be done. And again, I don't see any reason for handling keyboard like that. Qt already provides all the infrastructure you need.
Threading is a pretty tricky subject where it is very easy to shoot yourself in the foot in ways don't even realise your foot is gone and most of the leg with it. I'd recommend taking the time to read the QThread documentation and examples before going further.