Paginating a QTextEdit
I am making something akin to a Word clone. As such I need a text area that displays pages as I type. The more research I do into this, the more I believe that it is impossible in Qt. Here is what I have looked at so far:
- QTextEdit – As far as I can tell, if I want to do any sort of typing in Qt, I need to have one of these in my app.
- QTextDocument – Everyone I talk to seems to say I do pagination with one of these. QTextEdit can give me one, but the one it returns always has a page count of one. From reading the documentation, it seems like it actually only does pagination when I try to print said document.
- QTextFrame, QCursor, QScrollWidget, and many others – I feel like I’ve combed the entire documentation, and seen no way to actually paginate a QTextEdit. The closest I got was creating multiple QTextEdits and on text change try to redistribute the text. But this caused all kinds of problems because of the way QTextEdits paintEvent function seems to work.
Please help, in my mind this seems like it should be so simple, but everything I’ve tried leads to a deadend.
Note: This is my first time ever really using Qt, and I’m coding in Ruby.
If you want like the page layout in word, one way I see is …
using QGraphicsView, setting the scene, setting multiple QGraphicsTextItems which are editable, and updating the entire text on any edits.. you can set QTextDocument to these text items ..
Something similar is also available if you refer the QPrintPreviewWidget source
To learn QGraphicsView, a very good example is the chips demo that ships with Qt …
You create a QGraphicsView, then create a QGraphicsScene, create and add QGraphicsItems to the scene (text item, or pixmap item), set position and z order if required for each of these graphics items and set the scene to the view.. that’s basically about it. Read up the API in the assistant for full set of capabilities …