J'ai un document QTextEdit dont la taille est différente à chaque impression. Au milieu du document, j'ai quelques blocs de texte qui sont inséparables aux yeux de l'utilisateur et je dois protéger mes blocs contre le fractionnement sur deux pages au cas où le document serait de taille équivalente. Avez-vous une solution?Comment conserver ensemble peu de blocs de texte inséparables dans QTextEdit à la fin de la page actuelle (tout jeter sur la page suivante)?
Répondre
Je suis un grand fan de Qt mais je n'ai pas encore eu l'occasion d'utiliser un QTextEdit. Je voudrais aider cependant j'ai jeté un coup d'oeil à travers la documentation.
Si vous utilisez une version suffisamment récente de Qt, vous devriez trouver qu'un QTextEdit a un QTextDocument associé et il semblerait que la fonctionnalité que vous recherchez soit là. Un QTextDocument est une hiérarchie de cadres et de blocs. Un bloc est équivalent à un paragraphe comme vous l'avez mentionné ci-dessus.
La documentation semble indiquer que vous pourriez spécifier que vos blocs soient enveloppés dans un cadre. Ensuite, vous devriez pouvoir définir un format pour le cadre en utilisant QTextFrame :: setFrameFormat. Ce format vous permettra de spécifier une politique de saut de page en utilisant certains drapeaux. Les indicateurs spécifiés sont PageBreak_Auto, PageBreak_AlwaysBefore et PageBreak_AlwaysAfter.
Il me semble que si vous définissez à la fois les drapeaux PageBreak_AlwaysBefore et PageBreak_AlwaysAfter pour le cadre, alors vos blocs doivent rester ensemble. Je réalise qu'il s'agit d'une série relativement complexe. J'espère que cela aide et aimerait vraiment entendre si cela fonctionne.
La chose la plus proche de quelque chose qui fait cela est le séparateur de paragraphes Unicode (U + 2029). Si vous entourez un corps de texte avec des séparateurs de paragraphes, alors le moteur de rendu n'est pas censé laisser seul la première ligne ou la dernière ligne du paragraphe dans une page. Ce comportement peut être facilement observé dans MS-Word. Si toutefois le texte du bloc est quatre lignes ou plus alors vous n'avez pas un bénéficiaire que les quatre lignes seront dans la même page. ils pourraient diviser 2-2 entre les pages.
Le concept dont vous parlez est largement utilisé à plus petite échelle entre les mots et les lignes. Si vous placez un NBSP (No-Break Space, U + 00A0) entre les mots au lieu d'un espace normal, le moteur de rendu sait que la ligne ne doit pas être rompue dans cet espace.
Ce que vous recherchez est un "saut de ligne sans saut de page". Malheureusement Unicode n'a pas un tel personnage.
Ce que vous pouvez essayer est d'écrire tout le bloc de texte en utilisant des NBSP à la place des espaces. Finalement, votre seul texte NBSP va devenir plus grand qu'une ligne et il devra casser quelque part. C'est un certain cas d'Unicode dont je ne suis pas sûr qu'il soit vraiment défini. Il y a peut-être une chance que le saut de ligne qui sera généré soit tel qu'il ne se casse pas entre les pages. Ceci est même une autre fin de l'affaire. La seule façon de savoir ce qui se passe dans cette situation est d'essayer.
Vous avez raison, mais je ne sais pas comment trouver qch comme ça en qt. L'autre idée est de mesurer la longueur du document et d'utiliser "\ f" si la taille est dans la plage particulière. –
Infos intéressantes sur l'Unicode que je ne connaissais pas, merci. –
- 1. Comment envoyer plus de 5000 caractères à la page suivante
- 2. Validateur de plage ASP.net passer à la page suivante
- 3. Obtenez tout le contenu de la page?
- 4. Texte (TextBox) mis à jour perdu lorsque la vue grille passe à la page suivante
- 5. ASP.NET DATAGRID Pas de passer à la page suivante
- 6. css surligner la page actuelle
- 7. Comment fournir la page suivante du contenu mis à jour?
- 8. plusieurs zones de texte wmd sur la même page
- 9. comment afficher la feuille de marque sur la page suivante en utilisant ASP.NET?
- 10. Conserver la page en utilisant la pagination dans jQuery après avoir effectué quelques actions sur la page
- 11. PHP arrête de rendre la page quelque peu arbitrairement
- 12. Slideup \ Animer la page suivante avec jquery
- 13. Comment obtenir l'URL de la page actuelle en PHP
- 14. ifstream, fin de ligne et passer à la ligne suivante?
- 15. PHP: Comment afficher la page avant la fin du script?
- 16. Comment conserver une div au centre de la page?
- 17. vérification de la page suivante avant d'appeler document.location (javascript)
- 18. Pied de page sur la dernière page imprimée
- 19. Comment afficher la ligne suivante d'un ensemble dans Rails find
- 20. response.redirect pas rediriger, juste poster à la page actuelle
- 21. Comment faire la mise au point par défaut dans la page de contenu à partir de la page maître
- 22. Comment obtenir la page de code de la disposition de clavier actuelle?
- 23. javascript pour cacher paramètres et accédez à la page suivante
- 24. rediriger un lien de la page et le texte changeant de page basée sur le lien
- 25. Quelle est la manière la plus simple de conserver les valeurs des champs lors du passage de la page à la page?
- 26. magento - erreur sur la page de paiement
- 27. jQuery page suivante
- 28. zone de texte donnant des problèmes sur la page ASP.Net
- 29. Recherche d'un motif pour conserver les valeurs des champs de page en revenant à la page
- 30. Rapport d'erreur à l'aide de la page Global.aspx PAge
Fonctionne parfaitement! Je vous remercie! Je ne sais pas comment je l'ai manqué dans la documentation, j'ai honte :) –
Je suis content que ça a marché –