Bonjour,
Je me réfère souvent aux fils existants de ce forum pour m'aider dans mes galères (quelqu'un a souvent déjà eu le même pb que moi) , mais la, je sèche ...
Je cherche à imprimer un titre , des libellés et deux treeView dont la taille diffère selon l'objet selectionné dans mon programme.
Je suis partie sur du QPaint, Qprinter et render() pour récupérer mes treeviews. Cela fonctionne très bien quand mon Treeview n'a pas de scroll barre et tient sur une page d'imprimante. Quand il y a une scroll barre, les ennuis commencent.
Sur le principe, je récupère la hauteur de mon treeview et la hauteur d'une page d'imprimante pour déduire le nbre de page à créer.
Puis je recupere mon treeview en x appels render(), en deplaçant ma QRegion a chaque fois, histoire de balayer tout le treeview.
Mon TreeView tient sur 4 pages d'imprimante. Si je calcule mes tailles de régions à la main et fait 4 appels a render à la suite avec 4 régions decalées, ça fonctionne.
MAIS, mon treeview étant de taille aléatoire suivant la variable sélectionné, j'aimerai faire un calcul automatisé du nombre de page, avec une boucle et calcul de la région en decalant d'une hauteur de taille d'imprimante à chaque fois. Et la, les calculs passent pas. Mon programme estime qu'en 2 page tout est imprimé (1 premiere page + 1 page restante), ce qui n'est pas le cas.
(vu le bazar, je me demande si c'est bien a moi de calculer le nbre de page, découper en régions pour render ... je suis étonnée de ne pas balancer sur l'imprimante et que ça se débrouille ...bref)
J'ai l'impression que la taille de mon treeView (heighttree) que je récupère pour mes calculs est beaucoup plus petite que la réalité.
Ou mon échelle treeview/ imprimante est différente et je ne peux pas calculer comme ça ?
J'ai l'impression que le problème est juste de récupérer la hauteur totale de mon treeview, comme s'il etait deplié sans scrollbar. Je pensais que maximumViewportSize().height faisait ça justement, mais ça ne semble pas etre le cas.
nbpages (nbre de pages restant à imprimer après la première) vaut 1 alors qu'il devrait valoir 3 ou 4. J'ai tracé mes valeurs, la hauteur totale (maxviexport+scroll) me semble trop petite ...
une idée ? ça fait 2j que je tourne en rond !! :-(
Merci d'avance !
(j'ai pris le code en photo car je n'ai pas d'interaction avec l'exterieur sur mon PC de dev)
Partager