Russian Qt Forum

Qt => Печать => Тема начата: volkov9999 от Август 25, 2010, 20:36



Название: Как html отправить в preview?
Отправлено: volkov9999 от Август 25, 2010, 20:36
Здравствуйте.
Знаю что просто, но не смог допереть и найти что-то подходящее... :-\
Есть  QString c  html кодом . Будьте добры показать пример как отправить код на предпросмотр.


Название: Re: Как html отправить в preview?
Отправлено: kibsoft от Август 25, 2010, 21:10
QTextBrowser, если покруче то QWebView (подключив QtWebKit). Простой код можно отображать в QLabel.


Название: Re: Как html отправить в preview?
Отправлено: volkov9999 от Август 26, 2010, 01:43
Воспользовался QTextBrowser примером вот отсюда http://www.qtcentre.org/wiki/index.php?title=QTextBrowser_with_images_and_CSS.
Нарисовать хтмл документ - могу без проблем, хоть в дивах, а как в превью засунуть таки и не понимаю  :'(


Название: Re: Как html отправить в preview?
Отправлено: Denjs от Август 27, 2010, 13:08
есть стандартный виджет препросмотра - QPrintPreviewDialog .
у него есть сигнал paintRequested(QPrinter*) который надо подключить к чему-либо, что будет способно что-то нарисовать на этом самом QPrinter*. Испуская этот сигнал виджет препросмотра хочет что бы ему там нарисовали, что собственно ему отображать и потом печатать.

У техт-браузера и текст-едитора есть метод print(QPrinter *). в этот метож надо подсунуть то, на чем надо "нарисовать себя".
Рисует он соответсвенно "то, что в него положено" - как plain-text так и rtf/html.
Это и делается в void printForm::printPreviewNeeds(QPrinter *_printer).

Код:
    QTextEdit *cTextEdit;
    QPrintPreviewDialog *prDialog;

Код:
t_printForm::t_printForm(QObject *parent) :
    QWidget(parent)
{
...
    cTextEdit = new QTextEdit();
...
    QPushButton *doPreviewAndPrint= new QPushButton();
    doPreviewAndPrint->setText("Препросмотр\n и печать");
    QObject::connect(doPreviewAndPrint,SIGNAL(clicked()),this,SLOT(printPreview()));
...
    prDialog = new QPrintPreviewDialog(new QPrinter(QPrinter::HighResolution));
    connect(prDialog,SIGNAL(paintRequested(QPrinter*)),this,SLOT(printPreviewNeeds(QPrinter*)));
...
}

...
//--------------------------------------------------------------------------
//[SLOT]
void t_printForm::printPreview()//запустить окно предварительной печати
{
    prDialog->exec();
}

...
//--------------------------------------------------------------------------
//[SLOT]
void t_printForm::printPreviewNeeds(QPrinter *_printer)
{
    cTextEdit->print(_printer);
}

А вообще - не ленитесь читать подсистему помощи QAssistant - там довольно понятно изложено. пусть и на английском...
Это все выше практически 1:1 передрано с мануалов и примеров кода оттуда.
Удачи ;)


Название: Re: Как html отправить в preview?
Отправлено: volkov9999 от Август 31, 2010, 03:13
Denjs   -  Да прибудет с тобой ВЕЛИКАЯ СИЛА !!!    :D :D  :D :D :D :D :D


Название: Re: Как html отправить в preview?
Отправлено: andrew.k от Сентябрь 15, 2010, 15:44
Подскажите, у меня в QPrintPreviewDialog русский текст выводится кракозябрами.
Какую кодировку использовать? в чем может быть проблема?


Название: Re: Как html отправить в preview?
Отправлено: Denjs от Сентябрь 15, 2010, 17:04
Подскажите, у меня в QPrintPreviewDialog русский текст выводится кракозябрами.
Какую кодировку использовать? в чем может быть проблема?
Какая операционная система, какая версия QT, какая кодировка локали, нормально ли у вас оно тображается на виджете, какие используете установки в setCodefFor****()?


Название: Re: Как html отправить в preview?
Отправлено: andrew.k от Сентябрь 23, 2010, 09:48
Подскажите, у меня в QPrintPreviewDialog русский текст выводится кракозябрами.
Какую кодировку использовать? в чем может быть проблема?
Какая операционная система, какая версия QT, какая кодировка локали, нормально ли у вас оно тображается на виджете, какие используете установки в setCodefFor****()?
ОС: МСВС, QT: 4.4.3, локаль: кои8 (как узнать?), на виджете не нормально, setCodecForCStrings( кои8 ) и ForLocale (кои8);
Исходники соответственно в кои8.