peut être que tu peux essayer de parcourir ligne par ligne
puis avoir un booleen qui est à vrai quand t'es dans un bloc, et à faux quand t'es pas dans un bloc
quand tu tombes sur accolade ouvrante, tu mets un booleen à vrai
puis ensuite agir en conséquence de certaines cas comme:
si tu tombes sur accolade ouvrante alors que ton booleen est vrai (déjà dans un bloc) -> ça va pas
si tu tombes sur accolade fermante alors que ton booleen est faux (accolade fermante alors que t'as pas dans un bloc) -> ça va pas
si tu tombes sur accolade fermante et booleen vrai -> c'est ok, ça veut dire que ton bloc se ferme, donc ensuite on met le booleen à faux
ensuite si tu tombes sur du texte alors que ton booleen est à faux, tu verifie si c'est un selecteur (QFrame/QWidget etc puisque c'est pas dans le bloc le selecteur) s'il y a une accolade ouvrante sur la ligne, ou dans la ligne suivante, ou alors voir aussi si c'est du commentaire à l'aide de regex par exemple un truc qui devrait ressembler à #\s*/\*.*\*/\s*# pour voir si c'est de la forme
[espace blanc (tab/espace/etc)]/* moncommentaire */[espace blanc (tab/espace/etc)]