Ich habe ein QTextEdit-Dokument, dessen Größe bei jedem Druck unterschiedlich ist. In der Mitte des Dokuments habe ich wenige Textblöcke, die in den Augen des Benutzers untrennbar sind, und ich muss meine Blöcke vor dem Teilen auf zwei Seiten schützen, falls das Dokument die gleiche Größe erreicht. Hast du irgendeine Lösung?Wie man einige untrennbare Textblöcke in QTextEdit am Ende der aktuellen Seite zusammenhält (alle auf der nächsten Seite werfen)?
Antwort
Ich bin ein großer Fan von Qt, aber ich hatte noch keine Gelegenheit, einen QTextEdit zu verwenden. Ich würde gerne helfen, also habe ich mir die Dokumentation angesehen.
Wenn Sie eine ausreichend aktuelle Version von Qt verwenden, sollten Sie feststellen, dass ein QTextEdit ein QTextDocument zugeordnet ist und es scheint, dass die Funktionalität, die Sie suchen, da sein kann. Ein QTextDocument ist eine Hierarchie von Frames und Blöcken. Ein Block entspricht einem Absatz, wie Sie oben erwähnt haben.
Die Dokumentation scheint anzuzeigen, dass Sie angeben können, dass Ihre Blöcke in einem Rahmen eingeschlossen werden. Dann sollten Sie in der Lage sein, ein Format für den Rahmen mit QTextFrame :: setFrameFormat festzulegen. In diesem Format können Sie eine Seitenumbruch-Richtlinie mithilfe einiger Flags angeben. Die angegebenen Flags sind PageBreak_Auto, PageBreak_AlwaysBefore und PageBreak_AlwaysAfter.
Es scheint mir, dass wenn Sie sowohl die PageBreak_AlwaysBefore und PageBreak_AlwaysAfter Flags für den Rahmen festlegen, sollten Ihre Blöcke zusammen bleiben.
Ich weiß, das ist eine ziemlich komplexe Serie. Ich hoffe, dass es hilft und würde gerne hören, ob es funktioniert.
Das nächste was Sie haben, ist Unicode Paragraph Separator (U + 2029). Wenn Sie einen Textkörper mit Absatztrennzeichen umgeben, soll der Renderer nicht die erste Zeile oder die letzte Zeile des Absatzes auf einer Seite verlassen. Dieses Verhalten kann in MS-Word leicht beobachtet werden. Wenn der Text des Blocks jedoch vier Zeilen oder mehr beträgt, haben Sie keinen Empfänger, der alle vier Zeilen auf derselben Seite hat. Sie könnten 2-2 zwischen den Seiten teilen.
Das Konzept, von dem Sie sprechen, wird in einem kleineren Maßstab zwischen Wörtern und Zeilen verwendet. Wenn Sie einen NBSP-Wert (No-Break Space, U + 00A0) zwischen Wörtern anstelle eines normalen Bereichs eingeben, weiß der Renderer, dass die Zeile in diesem Bereich nicht unterbrochen werden darf.
Was Sie eigentlich suchen, ist ein "No-Page-Break Line-Feed". Leider hat Unicode kein solches Zeichen.
Sie können versuchen, den gesamten Textblock mit NBSPs anstelle von Leerzeichen zu schreiben. Schließlich wird Ihr einziger NBSP-Text größer als eine Zeile und er muss irgendwo zerbrechen. Dies ist ein bestimmter Endfall von Unicode, von dem ich nicht sicher bin, ob er wirklich definiert ist. Vielleicht besteht die Möglichkeit, dass der Zeilenumbruch, der erzeugt wird, so ist, dass er nicht zwischen den Seiten bricht. Dies ist sogar ein weiterer Endfall für den Endfall. Der einzige Weg zu wissen, was in dieser Situation passiert, ist zu versuchen.
Sie haben Recht, aber ich weiß nicht, wie man in qt so etwas findet. Die andere Idee ist, die Länge des Dokuments zu messen und "\ f" zu verwenden, wenn die Größe in dem bestimmten Bereich liegt. –
Intersting Info über Unicode, dass ich nicht bewusst war, danke. –
- 1. JavaScript am Ende der Seite?
- 2. Wie Fuß am Ende der Seite bleiben?
- 3. am Ende der Seite Text Out Fade
- 4. Zeige Fußzeile am Ende der Seite immer
- 5. Leerraum am Ende der Seite nichts hilft
- 6. Fix Whitespace am Ende der Seite
- 7. Bootstrap-Fußzeile nicht am Ende der Seite
- 8. Attach div Element am Ende der Seite
- 9. Fußzeile nicht am Ende der Seite
- 10. Schienen unerwartete Textknoten am Ende der Seite
- 11. Automatisches Laden einer neuen Seite am Ende der Seite
- 12. Wie alle Textfelder auf der aktuellen Seite iterieren
- 13. Pin Tablix Zeile am Ende der Seite auf SSRS-Berichte
- 14. ie7 Problem mit der Fußzeile am Ende der Seite bleiben
- 15. Wie wird eine Webseite am Ende der Seite geladen?
- 16. Fußzeile am Ende der Seite in Safari drucken
- 17. , wie in der aktuellen Seite in CakePHP
- 18. Platzieren Sie Wordpress Fußzeile am Ende der Seite
- 19. Wie man ein schwimmendes div macht, das am Ende der Seite schwebt
- 20. CSS-Fußzeile klebt nicht am Ende der Seite
- 21. $ (Dokument) .ready() und Initialisieren von jQuery am Ende der Seite
- 22. Position div am unteren Ende der Seite oder Bildschirm
- 23. Klicken Sie auf den Link am Ende der Seite, scrollt die Seite
- 24. Halten Sie die Fußzeile am Ende der Seite?
- 25. Fußzeile nicht am Ende der Seite zu bleiben
- 26. Wie bleibe ich auf der aktuellen Seite nach dem Aktualisieren der Seite in angularjs
- 27. CSS Push Div zum Ende der Seite
- 28. Zugriff auf Elemente auf der nächsten Seite in Selen Python
- 29. Javascript Seite aktualisieren auf der Grundlage der aktuellen Zeit
- 30. anzeigen Fußzeile, wenn am Ende der Seite oder Seite kurz ist sonst
Funktioniert perfekt! Vielen Dank! Ich weiß nicht, wie ich es in der Dokumentation vermisse, ich schäme mich :) –
Ich bin froh, dass es geklappt hat –