Signals and slots are not slower than directly calling a function, that's just in your head or you did something very inefficiently.
But, you can also use events.

By the way, updating a list in real time IS inefficiently. The users of your program will not be able to follow it anyway.