2013-04-08 5 views
2

Я пытаюсь создать приложение, которое будет отображать богатые текстовые документы с разбивкой по страницам - более или менее, как это делает MS Word. На данный момент я хотел бы иметь только одну страницу, отображаемую за раз.Как получить доступ к страницам QTextDocument

От this question Я узнал, что мне нужно представить документ по QTextDocument. Хотя автор вопроса больше фокусируется на представлении , я хотел бы узнать о доступе к документу данных в разбивке по страницам. Я вижу, что класс имеет такие методы, как setPageSize() и pageCount(). Вызов setPageSize(), кажется, обновляет pageCount() соответственно.

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

(я доступ к Qt с Python с помощью библиотеки PySide)

ответ

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); 
} 
+0

Благодарим вас за ответ. Я попытаюсь перевести ваше решение на Python и посмотреть, как он работает. – kmbt

Смежные вопросы