![]() |
|
![]() ![]() ![]() |
|
DK2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 8.3.2011 Репутация: нет Всего: нет |
Народ помогите пожайлуста очень нужна помощь.
Можно ли узнать количество строк(линий) в QTextEdit? как обратьтся к конкретной строке? Можно ли узнать количество символом в строке QTextEdit? как обратьтся к конкретному символу в строке? Можно ли узнать отступы между строками(лининиями)? А главное можно ли узнать начался ли скролинг в QTextEdit? если событие для этого? Бьюсь уже месяц над этим, пока не работает ничего. |
|||
|
||||
borisbn |
|
||||||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
правда, не проверял... см.
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||||||||||
|
|||||||||||||||
DK2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 8.3.2011 Репутация: нет Всего: нет |
Огромное спасибо. Буду побывать.
|
|||
|
||||
DK2 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 8.3.2011 Репутация: нет Всего: нет |
Вопрос
а как получить парамерты шрифта этого символа? Это сообщение отредактировал(а) DK2 - 11.5.2011, 22:08 |
||||
|
|||||
xwicked |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 9.4.2010 Где: Старый Оскол Репутация: 1 Всего: 1 |
При работе с QTextEdit я парсил html-код в QString. То есть, выгружал нужный участок в переменную типа QString, а потом уже получал / изменял шрифт. |
||||||
|
|||||||
DK2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 8.3.2011 Репутация: нет Всего: нет |
Я пробывал выделить нужный символ QTextCursor и из него достать шрифт. Однако выделить то, что нужно, не выходит. Сейчас пробую так
Мне то нужно узнать высоту линии(строки) всего то. Дальше сложить эти высоты + растояния между линиями и узнать выходит ли текст за рамки viewport если да, то лишнее вставить в другой TextEdit. Это сообщение отредактировал(а) DK2 - 15.5.2011, 16:10 |
|||
|
||||
xwicked |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 9.4.2010 Где: Старый Оскол Репутация: 1 Всего: 1 |
Я уже нашёл как это сделать более простым способом. Где-то записал в своей амбарной книге - надо полистать. Первый способ(как и у Вас), посчитал сильно бородатым - поэтому не стал это в своей программе реализовывать. Найду - отпишусь. Это сообщение отредактировал(а) xwicked - 15.5.2011, 18:51 |
|||
|
||||
DK2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 8.3.2011 Репутация: нет Всего: нет |
Огромное спасибо. Буду ждать.
|
|||
|
||||
DK2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 8.3.2011 Репутация: нет Всего: нет |
Народ вот еще интересный вопрос, касательно печати и обычной и в PDF формате.
Как напечатать текст из одного QTextEdit это понятно, а как напечатать одним файлом тектс из разных QTextEdit. К примеру, есть n-ное количество QtextEdit, для нас это будут страницы документа каждый textEdit новая страница. так идет обычная печать в PDF, взял из демо Qt
я пока не сильно разобрался, как это переделать под печать нескольких доков есть мысль, что нужно динамически создать QtextEdit и запихнуть в него текст из всех эдитов, вот как сделать чтобы каждый из этих едитов для принтера был новой страницей??? Это сообщение отредактировал(а) DK2 - 16.5.2011, 22:28 |
|||
|
||||
DK2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 8.3.2011 Репутация: нет Всего: нет |
Уважаемый xwicked, пока вы ищите не могли бы сказать в как вы это сделали. Хотя бы на пальцах, чтоб я сам попробывал сделать тоже самое. Так сказал, указать сторону в которую нужно копать.
Это сообщение отредактировал(а) DK2 - 16.5.2011, 23:54 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
DK2, в документе находишь нужный блок и получаешь для него формат. Что сложного
http://doc.qt.nokia.com/4.7/qtextdocument....ndBlockByNumber http://doc.qt.nokia.com/4.7/qtextblock.html#charFormat |
|||
|
||||
DK2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 8.3.2011 Репутация: нет Всего: нет |
Эта операция требует знать индекс блока в документе. Вопрос как узнать номер блока в доке если я могу пока что знаю индекс в конкретной строке? К тому же меня смущает назнание блок! Что это ? Имхо это несколько символов, мне нужет конкретный в линии. Это сообщение отредактировал(а) DK2 - 17.5.2011, 00:05 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
DK2, ты как узнал, какая у тебя "линия"? Или тебе нужно просто, узнать размер символа в строке 20 позиции 3?
Добавлено через 5 минут и 4 секунды DK2, можешь воспользоваться методом findBlockByLineNumber, а затем используя итерацию между begin()/end() найти формат нужного тебе символа. Но рекомендую научиться читать документацию. Так как имея проблемы с поиском нужных методов путем пролистывания документации на пару строчек вверх, далеко не уедешь. |
|||
|
||||
DK2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 8.3.2011 Репутация: нет Всего: нет |
именно так. мне нужно перебрать все символы построчно для того чтобы получить высоту линии. З.Ы. рекомендую сначала с темой ознакомится, findBlockByLineNumber мне уже рекомендовали выше |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
DK2, я тебе дал два метода, которые тебе позволят не перебирать все символы. А перебрать все форматы символов строки. Их, в общем случае, меньше, чем символов.
Это сообщение отредактировал(а) bsa - 17.5.2011, 11:51 |
|||
|
||||
DK2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 8.3.2011 Репутация: нет Всего: нет |
пример напиши как это можно делать.
|
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
Это сообщение отредактировал(а) bsa - 17.5.2011, 23:10 |
|||
|
||||
DK2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 8.3.2011 Репутация: нет Всего: нет |
Это позволит получить все форматы конкетной линии? или всего едита?
|
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
DK2, срочно проверь /dev/brain (может он выключен) и бегом читать документацию.
|
|||
|
||||
DK2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 8.3.2011 Репутация: нет Всего: нет |
доки на англе, не есть гуд
|
|||
|
||||
DK2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 8.3.2011 Репутация: нет Всего: нет |
тоесть я пишу так
Я правильно понял. Это посчитает мне высоту всех строк? Это сообщение отредактировал(а) DK2 - 18.5.2011, 21:22 |
|||
|
||||
DK2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 8.3.2011 Репутация: нет Всего: нет |
Интересный момент что currentFragment.charFormat().fontPointSize() = 0 , но если вывать сигнал изменения шрифта то он становится равным 8(дефалту)
есть мнения почему так? Это сообщение отредактировал(а) DK2 - 18.5.2011, 22:00 |
|||
|
||||
DK2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 8.3.2011 Репутация: нет Всего: нет |
Полный пипец. Только узнал, что линия - это блок текста прерывающийся переносом каретки(после нажатия Enter) или концом документа. Это мне не подходит. У меня линий это одна строчка в заканчивающаяся границами холста а не спец символами.
Может кто подкинет идею как сделдать то что я выше писал??? Это сообщение отредактировал(а) DK2 - 18.5.2011, 22:20 |
|||
|
||||
DK2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 8.3.2011 Репутация: нет Всего: нет |
удалось частично решить задуманое так
работает криво, и не учитывает что пользователь может переставить курсор в середину текстаи дальше продолжать ввод и много другое буду думать дальше и по презднему жду ваших предложений |
|||
|
||||
DK2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 8.3.2011 Репутация: нет Всего: нет |
подскажите как посимвольно перебрать весь текст textedit чтобы получтить его шрифт
|
|||
|
||||
xwicked |
|
||||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 9.4.2010 Где: Старый Оскол Репутация: 1 Всего: 1 |
Что выдаёт команда
Хм... Полистал свою тетрадь - нашёл запись(одно слово только ![]() Пока пробуйте реализовать парсер html-кода. Потом сможете просто поменять функцию и всё. Намекну:
|
||||||||||
|
|||||||||||
DK2 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 8.3.2011 Репутация: нет Всего: нет |
Я попробывал следующий код
Что главное, работает ровно когда нужно т.е когда идет скролинг. Вставил пока это по сигналу textChanged(), если поставить и на другие сигналы, то будет работать в нужные моменты. Осталось тока обработать этот процесс( то что написано в комментах). З.Ы.
Однако догадываюсь, что здесь в мягкой формулировке "а подумать головой". Думаю головой я всегда. Но если что не понятно то задаю вопросы, и даже глупые и тупые и еще всякие разные , до тех пор пока не пойму. З.Ы.Ы парсинг попробую реализовать (как я понял это поиск html тегов и их анализ, с последуюей обработкой), однако это на крайний случай, срок сдачи близится пока буду своими методами делать, если поможете буду очень благодарен. |
||||
|
|||||
xwicked |
|
||||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 9.4.2010 Где: Старый Оскол Репутация: 1 Всего: 1 |
У меня было что-то похожее. Я записал "размер" под этой темой и слёту не вкурил, что я там имел ввиду, так как всё остальное я прогнал в коде и не записал. А вернуться к этому моменту, могу только сейчас - работаю один - и реализация количества мыслей опаздывает на 0.5 - 1 год.
![]()
![]() |
||||||||||
|
|||||||||||
DK2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 8.3.2011 Репутация: нет Всего: нет |
Очень срочно.
Подскажите как установить курсор в доке на последний символ как выделить текст с последнего(n) символа и до нужного мне (n-2 к примеру) хочу в цикле выделять текст сначала тока последний, потом последние 2 , далее последние 3 и т.д |
|||
|
||||
DK2 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 8.3.2011 Репутация: нет Всего: нет |
я делаю так,
но не работает, а точнее ui->textEdit->textCursor().selectedText() = ""
|
||||
|
|||||
DK2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 8.3.2011 Репутация: нет Всего: нет |
Так как я еще не достаточно хорошо знаю и С++ и Qt не могли бы Вы мне помочь с записью алгоритма.
Я составлю шаблон и комменты что и где-то дожно считаться и т.д. , а Вы запишите это как надо в Qt.
З.Ы. если смысл создавать динамический QtextEdit чтобы в нем впроводить эти действия, чтобы они не отображались на текущем чтоб тозмозов из-за отрисовки не было? |
|||
|
||||
DK2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 8.3.2011 Репутация: нет Всего: нет |
Ура вроде бы работает. Тока один глюк есть. Когда лишнее вырезается то оно должно вставится в следующий эдит, в начала эдита. Однако вставляется в конец, что не есть гуд.
это код не ставит курсор в начала текста вырезаный фрагмент оказывается в конце, как поставить курсор куда нужно? |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
А по мне, так самый что ни на есть гут - китайский или хинди учить не надо. Запомни, в программировании доки на русском почти нет. Если у какой-то либы нет доки на английском, дорога в жизнь ей заказана. Поэтому, если не очень стар - УЧИ АНГЛИЙСКИЙ!!! |
|||
|
||||
DK2 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 8.3.2011 Репутация: нет Всего: нет |
Итак народ, мне все-таки удалось решить эту задачу. Решил отписатся для тех кому интересно или кто захочет сделать тоже самое.
Предупреждаю заранее, код придется редактировать под себя. Суть в том, что я создал слот для обработки сигнала textChanged() это заголовочный файл тут видно что я слдот прикрутил
ссылки на сорсы класса http://narod.ru/disk/16136280001/qmultipagetextarea.h.html http://narod.ru/disk/16136198001/qmultipagetextarea.cpp.html Это сообщение отредактировал(а) DK2 - 16.6.2011, 00:22 |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |