我正在尝试构建一个以分页方式显示富文本文档的应用程序 - 或多或少像MS Word一样。现在,我希望一次只显示一页。
从this question我了解到我需要通过QTextDocument来代表该文档。虽然问题的作者更多地关注视图表示,但我想学习以分页方式访问文档数据。我可以看到该类包含setPageSize()
和pageCount()
等方法。调用setPageSize()
似乎会相应地更新pageCount()
。
问题是我不知道如何访问所选页面的内容以使其显示在QtextEdit中。
(我通过PySide库从Python访问Qt)
答案 0 :(得分:2)
QTextEdit
是一个文本编辑器,并没有真正的页面概念,而是围绕段落。
您可以创建自己的分页视图以尊重页面大小,但Qt已经为您提供了一个。请查看QPrintPreviewWidget
或QPrintPreviewDialog
。它们易于使用QTextEdit
。
子类QTextEdit
并实现以下函数(preview
函数是Qt槽)。 printPreview
函数会在包含QTextEdit
内容的对话框中显示分页视图。
void MyTextEdit::printPreview(QPrinter *printer)
{
QPrinter printer(QPrinter::HighResolution);
QPrintPreviewDialog preview(&printer, this);
connect(&preview, SIGNAL(paintRequested(QPrinter*)), SLOT(preview(QPrinter*)));
preview.exec();
}
void MyTextEdit::preview(QPrinter *printer)
{
print(printer);
}