2

我正在尝试构建一个以分页方式显示富文本文档的应用程序 - 或多或少像 MS Word 那样。现在,我希望一次只显示一页。

这个问题中,我了解到我需要用QTextDocument来表示文档。虽然问题的作者更多地关注视图表示,但我想了解以分页方式访问文档数据。我可以看到该类具有诸如setPageSize()和之类的方法pageCount()。呼叫setPageSize()似乎pageCount()相应更新。

问题是我不知道如何访问所选页面的内容以将其显示在 QtextEdit 中。

(我通过 PySide 库从 Python 访问 Qt)

4

1 回答 1

2

QTextEdit是一个文本编辑器,并没有真正的页面概念,而是专注于段落。

您可以创建自己的分页视图来尊重页面大小,但 Qt 已经为您提供了一个。看看QPrintPreviewWidgetQPrintPreviewDialog。它们很容易与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);
}
于 2013-04-08T21:20:31.033 回答