For purpose of recovering the clock, no window function is needed. Also to clarify, your signal is downsampled to 10GS/s which is samples per second, not "Symbols per second" as you specified the symbol rate to be 2.4 GBuad which is 2.4 G Symbols/second.
For QPSK clock recovery, I recommend considering the Gardner Loop in which case you would filter and downsample to 2 samples per symbol (4.8 GS/s). You can see the link below for more information on the Gardner Loop implementation and considerations. I have seen very efficient implementations for closing the timing loop using polyphase filters; let me know if you would like more information on that (and update your title to not mention windowing) and I can add that here.
You will likely also have a carrier offset that you will need to track and remove. The Gardner is fairly insensitive to carrier offset, so once timing is acquired you can downsample to one sample per symbol (at the best decision locations) and use those complex samples to determine the carrier offset and correct for that in a carrier tracking loop (such as a digital Costas Loop).
See: Gardner Timing Recovery for Repeated Sybmols