Название: QT4. QtextBrowser игнорирует впередистоящие пробелы, редиска! Отправлено: Пытон от Декабрь 04, 2011, 11:57 Код выкинет пробелы вначале и вставит только "I need spaces!!!" Как побороть такое мерзопакостное поведение? Мне нужны эти пробелы! Название: Re: QT4. QtextBrowser игнорирует впередистоящие пробелы, редиска! Отправлено: BuRn от Декабрь 04, 2011, 12:03 char *pstr;
for(pstr=str;*pstr==' ';pstr++); for(;*pstr;pstr++,str++) *str=*pstr; str[1]='\0'; Название: Re: QT4. QtextBrowser игнорирует впередистоящие пробелы, редиска! Отправлено: panAlexey от Декабрь 04, 2011, 12:46 Код выкинет пробелы вначале и вставит только "I need spaces!!!" Как побороть такое мерзопакостное поведение? Мне нужны эти пробелы! Код
Название: Re: QT4. QtextBrowser игнорирует впередистоящие пробелы, редиска! Отправлено: Странник от Декабрь 04, 2011, 13:40 это все фишки HTML. помимо приведенного выше совета можете попробовать поместить ваш текст в тэг <pre> - тогда форматирование будет сохранено. не помню, правда, поддерживается ли этот тэг в QTextBrowser, но по логике вещей должен.
Название: Re: QT4. QtextBrowser игнорирует впередистоящие пробелы, редиска! Отправлено: Пытон от Декабрь 04, 2011, 14:27 Дело в том, что строка текста вставляется в QtextBrowser из текстового файла. Строки берутся из него порциями. Так надо. И я не могу заранее знать сколько там пробелов в начале порции может оказаться, а может и не оказаться. Вариант с nbsp не очень-то подходит. Как-то не радует высчитывать сколько там пробелов в начале и подставлять нужное кол-во nbsp во вставляемую строку.
Попробую <pre>. Название: Re: QT4. QtextBrowser игнорирует впередистоящие пробелы, редиска! Отправлено: Пытон от Декабрь 04, 2011, 16:56 С прискорбием вынужден сообщить, что тег <pre> не подходит. При его использовании виджет перестаёт делать выравнивание текста по собственным границам. Весь текст выстраивается в одну строку и появляется горизонтальный бегунок. Не пойдёт!
Можно было бы использовать insertPlainText, но мне нужно вставлять определённые отрывки текста другим цветом. Если часть текста вставлять insertPlainText, а часть insertHtml, то они друг с другом не дружат. Допустим, так: Код
В данном случае слово " four" напечатается с пробелом, но после первого срабатывания insertHtml ВЕСЬ последующий текст, не взирая на закрывающий тег, какого-то лешего, станет красным. Если вместо insertPlainText использовать тоже insertHtml, то всё будет как надо: красным будет только слово "-two". Но слово " four" будет отображено без начального пробела! Вот, блин, засада! Название: Re: QT4. QtextBrowser игнорирует впередистоящие пробелы, редиска! Отправлено: Bepec от Декабрь 05, 2011, 07:28 Простое решение - заменяй в считанной из файла строке все пробелы на
Функция replace тебе поможет. Название: Re: QT4. QtextBrowser игнорирует впередистоящие пробелы, редиска! Отправлено: andrew.k от Декабрь 05, 2011, 09:25 Похоже на баг QTextBrowser. Решил проверить, сначала не заметил даже, что реально глюк)
С тегом <b> такого нет. Я делал подобное в QTextEdit. Таких проблем у меня не было. Может в нем нет этого косяка. Название: Re: QT4. QtextBrowser игнорирует впередистоящие пробелы, редиска! Отправлено: andrew.k от Декабрь 05, 2011, 09:29 Если после закрывающего тега </font> вставить что-нибудь нейтральное, например пробел. То баг вылечивается.
Думаю тебя устроит вставка \n. В хтмл перенос строки не обрабатывается, никак не повлияет на результат. Зато пофиксит баг) Т.е. вот таким образом. Код
Таким образом можешь поочередно использовать insertHtml и insertPlainText. Название: Re: QT4. QtextBrowser игнорирует впередистоящие пробелы, редиска! Отправлено: andrew.k от Декабрь 05, 2011, 10:23 Стоит отметить, что "\n" в HTML заменяется на пробел, я это забыл.
Если не устраивает надо искать какой-то другой невидимый символ. Название: Re: QT4. QtextBrowser игнорирует впередистоящие пробелы, редиска! Отправлено: Пытон от Декабрь 05, 2011, 16:46 Видимо, буду использовать   и replace. Тексты у меня небольшие, лишняя обработка строк не будет заметна для скорости вывода.
Спасибо ответившим. А если кто-нибудь что-нибудь ещё интересное знает по этому поводу, сообщайте. |