crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
Dovgon
  опции профиля:
сообщение 9.12.2011, 16:51
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 92
Регистрация: 5.1.2011
Пользователь №: 2325

Спасибо сказали: 3 раз(а)




Репутация:   0  


Если сделать так то текст не выравнивается по центру, в чем может быть дело?
QPainter painter(pPrinter);
QTextDocument textDocument;

....
stringPage+="<H1 align=\"center\">текст</H1>";
....

textDocument.setHtml(stringPage);
textDocument.drawContents(&painter);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Kilimangaro
  опции профиля:
сообщение 9.12.2011, 22:35
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 9.12.2011
Пользователь №: 3053

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Dovgon @ 9.12.2011, 15:51) *
Если сделать так то текст не выравнивается по центру, в чем может быть дело?
QPainter painter(pPrinter);
QTextDocument textDocument;

....
stringPage+="<H1 align=\"center\">текст</H1>";
....

textDocument.setHtml(stringPage);
textDocument.drawContents(&painter);

Замените <H1 align=\"center\">текст</H1> на <H1 align='center'>текст</H1> (одинарные кавычки)

Потому, что данное экранирование ковычек заставляет обработчик HTML кода их не воспринимать совсем (как буд-то их нет). А если ковычек нет, то и параметр задан не корректно. Для примера, можно запустить данный HTML код в браузере и выравнивание так же не прйдет.

Можно еще заменить эту запись на <center><H1>текст</H1></center>
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BlueIceScream
  опции профиля:
сообщение 10.12.2011, 13:11
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 56
Регистрация: 21.11.2011
Из: Республика Дагестан
Пользователь №: 3016

Спасибо сказали: 18 раз(а)




Репутация:   3  


Код работает отлично. Парсер воспринимает его так как надо.
Попробуйте этот вариант


    QTextDocument *td = new  QTextDocument();
    td->setHtml(QString::fromLocal8Bit("<H1 align=\"center\">текст</H1>"));



Проверен только что. Работает.

Цитата
Потому, что данное экранирование ковычек заставляет обработчик HTML кода их не воспринимать совсем (как буд-то их нет).


С чего вы взяли что они вообще доходят в таком виде до парсера Html?

stringPage является объектам типа QString(как я понял). Смотрим перегруженный оператор operator+= :

QString & operator+= ( const QString & other )
QString & operator+= ( const QLatin1String & str )
QString & operator+= ( const QByteArray & ba )
QString & operator+= ( const char * str )
QString & operator+= ( const QStringRef & str )
QString & operator+= ( char ch )
QString & operator+= ( QChar ch )

Получаем что для данных <H1 align=\"center\">текст</H1> вызывается неявно конструктор, а затем выполняется operator+=
в таком случае исходных символов \ после неявного вызова конструктора, ссылка на объект типа QString, которую он вернет, вообще не будет содержать. Однако неизвестно включены ли QT_NO_CAST_FROM_ASCII и какая кодировка в редакторе. Поэтому я призываю использовать конструктор явно. Как в примере выше который я показала. Этот вариант работает при правильной остальной части stringPage.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Dovgon
  опции профиля:
сообщение 11.12.2011, 22:32
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 92
Регистрация: 5.1.2011
Пользователь №: 2325

Спасибо сказали: 3 раз(а)




Репутация:   0  


Забыл добавить, печать идет не на принтор а в pdf.
pPrinter->setOutputFormat(QPrinter::PdfFormat);

Проблема точно не в html тексте, я пробовал его сохранить в файл html и все отображается номально.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 13.12.2011, 12:09
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Цитата(Dovgon @ 11.12.2011, 23:32) *
Забыл добавить, печать идет не на принтор а в pdf.
pPrinter->setOutputFormat(QPrinter::PdfFormat);

Проблема точно не в html тексте, я пробовал его сохранить в файл html и все отображается номально.

Кавычки здесь не при чем. HTML не XML, и позволяет разные варианты и align="center" и align='center' и даже align=center. Видимо для печати используется упрощенный парсер, поэтому и не работает. Попробуйте через CSS:
<h1 style='text-align:center'>Text</h1>
<div style='text-align:center'><h1>Text</h1></div>
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Dovgon
  опции профиля:
сообщение 15.12.2011, 11:46
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 92
Регистрация: 5.1.2011
Пользователь №: 2325

Спасибо сказали: 3 раз(а)




Репутация:   0  


Даже если печатать, а не сохранять не получилось. Может у кого есть готовый пример что бы отправить на принтор html с центровкой текста.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Dovgon
  опции профиля:
сообщение 20.12.2011, 10:51
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 92
Регистрация: 5.1.2011
Пользователь №: 2325

Спасибо сказали: 3 раз(а)




Репутация:   0  


Сделал по другому место QTextDocument использовал QWebView.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 4.6.2025, 0:36