Как да получите достъп до страниците на QTextDocument

Опитвам се да създам приложение, което да показва документи с богат текст по пагиниран начин - повече или по-малко като MS Word. Засега бих искал да показвам само една страница наведнъж.

От този въпрос научих, че трябва да представя документа чрез QTextDocument. Докато авторът на въпроса се фокусира повече върху представянето на изгледа, бих искал да науча за достъпа до данните на документа по пагиниран начин. Виждам, че класът има методи като setPageSize() и pageCount(). Извикването на setPageSize() изглежда съответно актуализира pageCount().

Проблемът е, че не знам как да получа достъп до съдържанието на избрана страница, за да я покажа в QtextEdit.

(Имам достъп до Qt от Python посредством библиотека PySide)


person kmbt    schedule 08.04.2013    source източник


Отговори (1)


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);
}
person Daniel Hedberg    schedule 08.04.2013
comment
Благодаря Ви за отговора. Ще се опитам да преведа вашето решение на Python и да видя как работи. - person kmbt; 09.04.2013