![]() |
|
![]() ![]() ![]() |
|
Torsten |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 174 Регистрация: 10.6.2008 Где: Pskov Репутация: 3 Всего: 7 |
В QTextEdit для работы со строками текста, используются QTextBlock. Так вот вопрос, можно ли каким-то образом определить (получить) первый видимый блок ?
Я знаю только один "тупой" и не оптимизированный вариант - перебор всех блоков от первого и сравнение координат точки начала и смещения позиции по значению скроллбара. Хочу заметить что вариант взять line spacing и разделить на координату Y, полученную от скроллбара очень простой и не подходит, потому что текст может быть word wraping или наоборот свернут (folding). Это сообщение отредактировал(а) Torsten - 10.6.2008, 18:55 --------------------
We have no begining, we have no end. We are infinite. |
|||
|
||||
anatox91 |
|
|||
![]() программист-самоучка ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 12.1.2008 Где: ++Украина.Крым++ Репутация: нет Всего: 13 |
так или я что-то не так понял? -------------------- The code is the design © Sony VAIO VGN-FW480J ![]() |
|||
|
||||
Torsten |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 174 Регистрация: 10.6.2008 Где: Pskov Репутация: 3 Всего: 7 |
Нет.
Ты получаешь QTextBlock на 1-ую строку (идентично textEditor()->document()->begin()), а мне нужно на 1-ую видимую строку сверху окна. Это сообщение отредактировал(а) Torsten - 10.6.2008, 19:56 --------------------
We have no begining, we have no end. We are infinite. |
|||
|
||||
GePo |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 30.3.2003 Где: Москва Репутация: нет Всего: 3 |
У QTextBlock есть метод isVisible, оно? перебираешь блоки и смотришь, какие из них видны, попутно определяя, кто из них первый. Примерно то же, что и у вас, только без извратов при работе со скроллбаром .
--------------------
|
|||
|
||||
Torsten |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 174 Регистрация: 10.6.2008 Где: Pskov Репутация: 3 Всего: 7 |
Нет, не оно. Этот как раз нужно чтобы делать folding, т.е. физически скрывать блок. Ему можно установить значение видимый или не видимый. В сторону методов, мне кажется смотреть безполезно - т.е. такого метода в библиотеке нет, я весь ассистант пересмотрел. Нужно искать другие способы.
Кроме того я уже писал, перебирать все блоки - это плохой способ. Пример : файл 2000-3000 строк, мы находимся в конце файла, при каждой перерисовке будут выполнятся лишние тысячи сравнений и других операций по получению координат. Это сообщение отредактировал(а) Torsten - 10.6.2008, 21:00 --------------------
We have no begining, we have no end. We are infinite. |
|||
|
||||
Torsten |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 174 Регистрация: 10.6.2008 Где: Pskov Репутация: 3 Всего: 7 |
Вообщем получилось у меня это сделать.
Это сообщение отредактировал(а) Torsten - 11.6.2008, 00:48 --------------------
We have no begining, we have no end. We are infinite. |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 7 Всего: 162 |
Torsten, расскажешь конечный рецепт?
|
|||
|
||||
Torsten |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 174 Регистрация: 10.6.2008 Где: Pskov Репутация: 3 Всего: 7 |
Ну, если кому-то понадобится - тему создатут, напишу, заодно и плюс получу в репу.
Просто пока что даже судя по ответам и open source ПО, некому это не нужно было ... ![]() --------------------
We have no begining, we have no end. We are infinite. |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 7 Всего: 162 |
Интересная позиция. Но - твоё право, конечно.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, 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. |