Comme vous l'avez déjà mentionné, il est difficile de prédire la durée d'exécution d'une requête (en raison de la requête elle-même et de ses paramètres, en raison du réseau, en raison de la charge du serveur).
Quoi qu'il en soit, vous devez déplacer les requêtes SQL dans QThreads. Cela permet à votre application de servir l'interface graphique pendant l'exécution des requêtes.
De plus, je n'essaierais pas de résoudre ce problème par des délais d'attente. Vous aurez beaucoup d'ennuis car vous ne parviendrez pas à choisir les bons délais d'attente pour chaque requête et chaque situation. Au lieu de cela, fournissez un moyen d'annuler les requêtes par un bouton ou une boîte de dialogue afin que l'utilisateur puisse décider s'il est judicieux de continuer à attendre ou non.