Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] Html в QTextEdit, append не пашет, или? 
:(
    Опции темы
pan2004
Дата 4.3.2009, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 357
Регистрация: 28.7.2007

Репутация: 6
Всего: 9



Возможно это больше вопрос к ХТМЛовцам, но если честно особого опыта у меня нет ни в HTML ни в Qtшном Rich Text Engine. В общем к делу. Окошко чата в одной программе решено сделать через QTextEdit. Для визуального отделения реплик пришла мне в голову гениальная идея smile использовать для этого горизонтальные линии. Итак как это выглядит. Пусть chatTEdit это окошко чата, myText текст реплики. Имеем:
Код
ui->chatTEdit->append(myText + "<hr>");

Так вот, это не работает. Горизонтальная линия добавляется, но начиная со второго вызова append почему-то происходит вставка сразу двух(!) линий за раз. Вот как это выглядит:
user posted image
Но это не самое интересное. В попытках разобраться, добавил еще одно PlainTextEdit окошко, в которое сбрасывал по сигналу textChanged HTML код окна чата. Вот полученный результат:(каким бы странным это ни казалось, код соответствует рисунку выше(!))
Код
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;">
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Привет братаны!</p>    <!-- так ладно это первая реплика, но где остальные?! -->
<hr /> <!-- Почему здесь вдруг ПЯТЬ тегов hr!? -->
<hr />
<hr />
<hr />
<hr /></body></html>

Что делать? Бьюсь уже вторые сутки...


--------------------
Qt4/C++ fan
WinXP SP3: MSVC++2005 Qt4.5.1 Boost1.39
сыграем в дурака?
PM MAIL   Вверх
SABROG
Дата 4.3.2009, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Это баг. И судя по истории трекера он то исправляется, то появляется.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
pan2004
Дата 4.3.2009, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 357
Регистрация: 28.7.2007

Репутация: 6
Всего: 9



можно ссылку на запись трекера?


--------------------
Qt4/C++ fan
WinXP SP3: MSVC++2005 Qt4.5.1 Boost1.39
сыграем в дурака?
PM MAIL   Вверх
SABROG
Дата 4.3.2009, 22:24 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



http://www.qtsoftware.com/developer/task-t...y&id=199663
http://www.qtsoftware.com/developer/task-t...y&id=225896
http://lists.trolltech.com/qt-interest/200...ead00224-0.html

Там их несколько на самом деле. Попробуй еще вариант с "<hr>text</hr>". Правда то, что полоса появляется поверх первой записи некрасиво.

Это сообщение отредактировал(а) SABROG - 4.3.2009, 22:37


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
pan2004
Дата 4.3.2009, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 357
Регистрация: 28.7.2007

Репутация: 6
Всего: 9



но зато работает. Некрасиво, да, но я думаю реально это обойти if ом. Спасибо smile 


--------------------
Qt4/C++ fan
WinXP SP3: MSVC++2005 Qt4.5.1 Boost1.39
сыграем в дурака?
PM MAIL   Вверх
SABROG
Дата 4.3.2009, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Вот такой код еще нашел, может адаптируешь:

Код

void MyTextEdit::addSeparatorLine()
{
    QTextDocumentFragment fragment = QTextDocumentFragment::fromHtml("<hr>");
    QTextCursor cursor(document());
    cursor.movePosition(QTextCursor::End);
    cursor.insertFragment(fragment);
}




--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Madonna
Дата 22.1.2010, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Forbidden love...
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 22.1.2009
Где: Москва

Репутация: 3
Всего: 4



При добавлении append, повляется по 4 дубля.  smile 

Цитата(pan2004 @  4.3.2009,  20:42 Найти цитируемый пост)
но зато работает. Некрасиво, да, но я думаю реально это обойти if ом. Спасибо smile  

а можно поподробнее?

P.S. qt 4.6.1, win7

Добавлено через 5 минут и 15 секунд
Цитата(SABROG @  4.3.2009,  20:24 Найти цитируемый пост)
"<hr>text</hr>".

Ещё хочется вывести из Qstring...
Код

Qstring str;
if (...) str = "blabla1";
if (...) str = "blabla2"
if (...) str = "blabla3"
ui->textEdit_Blabla->append(str);


Добавлено через 5 минут и 38 секунд
как-то так
--------------------
Best regards, Madonna
PM   Вверх
Madonna
Дата 24.1.2010, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Forbidden love...
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 22.1.2009
Где: Москва

Репутация: 3
Всего: 4



Теперь нормально отображется и дебаг версии тоже. Оо.
Ничего не меняла, наоборот методы добавила. 
Интересно, из-за чего так.

--------------------
Best regards, Madonna
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0519 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.