Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: ikar2012 от Апрель 24, 2013, 15:07



Название: вывод данных ,QScrollArea
Отправлено: ikar2012 от Апрель 24, 2013, 15:07
Добрый день!

С QT начал разбираться недавно, поэтому прошу отнестись с пониманием...

Задача следующая:
в дочернее окно (mdi) нужно вывести некие бинарные данные. Что-то наподобие того , как через F3 открыть в Far любой бинарный файл.
с самим mdi. дочерними окнами вроде разобрался.
пытаюсь вывести данные (QByteArray).
Т к данные естественно в рабочую область не помещаются, нужен скроллинг. В окно кидаю QScrollArea, в него кидаю виджет, который наследую от QWidget, переписываю paintEvent(). Данные вывожу через QPainter::drawText(); в принципе данные выводится.
но для того чтобы появился скролинг, насколько я понял, нужно установить размер вложенного виджета. Добавил функцию, в которую перед выводом подаю данные, считаю количество строк и определяю самую длинную строку (строку определяю по 0х0А), изменяю размер вложенного виджета, потом вывожу - при небольшом объеме данных вроде работает. Но при более менее существенном тормозит дико. При этом если вместо своего виджета подставить , например , QTextEdit - все работает нормально, в не зависимости от объема (в него подаю естественно Qstring,но QTextEdit мне не подходит).
Как внутри устроен QTextEdit, тоже понять не удалось. Там куча отсутствующих в доках макросов.
Как добиться желаемого результата? Как устроены в принципе всяческие редакторы и просмотровщики, работающие с символами (байтами).
Я вижу только одно решение пока - обрисовывать только видимую область. Но не понимаю как это сделать. Во-первых у виджета нет viewport(), во-вторых получается что при любой перерисовке нужно пересчитывать весь объем данных - я не знаю как там строки"разложаться". Считать один раз и держать некую разметку в памяти , мне кажется не правильным.

Подскажите, в правильном ли я направлении думаю, и , по возможности, хотя бы подтолкните в сторону примеров.


Название: Re: вывод данных ,QScrollArea
Отправлено: dio от Апрель 24, 2013, 15:29
Смотрите в сторону Model/View
http://qt-project.org/doc/qt-4.8/model-view-programming.html (http://qt-project.org/doc/qt-4.8/model-view-programming.html)


Название: Re: вывод данных ,QScrollArea
Отправлено: ikar2012 от Апрель 24, 2013, 15:44
не могли бы вы пояснить конкретней

как это может помочь?

у меня несколько типов дочерних окон. В некоторых используются таблицы, как раз через  Model/View. большие таблицы (большое количество столбцов) отрисовываются точно так же с огромными тормозами. я не понимаю что и как нужно (можно) изменить, за исключением использования модели вместо моей "предрасчетной" функции. Но она работает быстро, подозреваю что быстрее чем будет модель. Тормоза именно на "прорисовке"
Кроме того я не понимаю какой можно использовать View в моем случае


Название: Re: вывод данных ,QScrollArea
Отправлено: Командор от Апрель 24, 2013, 16:18
Было бы неплохо привести кусок кода. Точнее то, что делается в paintEvent(). По-хорошему, там нужно нарисовать только те строки, которые раньше были вне области видимости, т.к. то, что было видно, QScrollArea автоматически перерисовывает/сдвигает, область перерисовки передается в функцию paintEvent(). У меня такое ощущение, что через QPainter::drawText() рисуется весь видимый текст, или, еще хуже, вообще весь текст. Вывод всего текста, конечно, "обнуляется", т.е. то, что выводится за пределы видимого реально не рисуется, но ресурсы жрет.


Название: Re: вывод данных ,QScrollArea
Отправлено: ikar2012 от Апрель 24, 2013, 16:39
спасибо что откликнулись

да , отрисовывается именно весь текст. Я понимаю что так неправильно. Но как определять видимую область через widget (я нашел только как через QScrollArea, но не совсем понимаю как это связать), и чтот делать с данными - каждый раз предрасчитывать?
Код:
void ViewWidget::paintEvent(QPaintEvent* ev){
qDebug()<<"repaint";
QStyleOption opt;
opt.init(this);
QPainter p(this);
style()->drawPrimitive(QStyle::PE_Widget,&opt,&p,this);

if (data.size()>0){


QFontMetrics metrics(font());
QColor color;
int x =metrics.width(data.at(0));
int y =metrics.height();
int sm =0;
int n_str=1;
p.setPen(QColor(Qt::black));


for (int i = 0; i < data.size(); ++i) {



if ( data.at(i)==10) {n_str++;x=0;}
else {
p.drawText(x, y*n_str, QString( data.at(i)));

sm=metrics.width(data.at(i));
if (sm==0) sm =metrics.width(" ");
x += sm;
}
    }



}
}




Название: Re: вывод данных ,QScrollArea
Отправлено: Командор от Апрель 24, 2013, 17:03
Нужно анализировать параметр QPaintEvent *ev, а точнее ev->region->boundingRect() - это часть виджета, который нужно перерисовать. Соответственно, раз у нас есть метрика шрифта или задана высота строки, то можно вычислить диапазон строк, которые нужно нарисовать.


Название: Re: вывод данных ,QScrollArea
Отправлено: dio от Апрель 24, 2013, 17:05
не могли бы вы пояснить конкретней

как это может помочь?
Во-первых будет правильная отрисовка, только видимой области;
Во-вторых возможно реализовать частичную подгрузку данных;
Цитировать
To create models that populate incrementally, you can reimplement fetchMore() and canFetchMore().

Цитировать
Кроме того я не понимаю какой можно использовать View в моем случае

Например, QTableView. С помощью делегатов можно реализовать вид, любой сложности.


Название: Re: вывод данных ,QScrollArea
Отправлено: ikar2012 от Апрель 24, 2013, 19:41
Нужно анализировать параметр QPaintEvent *ev, а точнее ev->region->boundingRect() - это часть виджета, который нужно перерисовать. Соответственно, раз у нас есть метрика шрифта или задана высота строки, то можно вычислить диапазон строк, которые нужно нарисовать.
спасибо, завтра попробую ( сегодня уже никак)


Название: Re: вывод данных ,QScrollArea
Отправлено: Bepec от Апрель 24, 2013, 19:45
Хорошо когда человек делает свой собственный велосипед.

Повторю совет dio - почитайте про model-View.

PS объем работы по написанию собственной model-View у вас будет колоссальный :P


Название: Re: вывод данных ,QScrollArea
Отправлено: ikar2012 от Апрель 24, 2013, 19:58
не могли бы вы пояснить конкретней

как это может помочь?
Во-первых будет правильная отрисовка, только видимой области;
Во-вторых возможно реализовать частичную подгрузку данных;
Цитировать
To create models that populate incrementally, you can reimplement fetchMore() and canFetchMore().

Цитировать
Кроме того я не понимаю какой можно использовать View в моем случае

Например, QTableView. С помощью делегатов можно реализовать вид, любой сложности.

Пока при выводе в таблицу это еще медленней получается, т к накладные расходы на класс модели, на более сложный класс qtableview. И как сделать чтобы была отрисовка была "правильной" я не нашел. Если вручную все отслеживать - то мой подход ничем отличаться не будет с точки зрения удобства и трудоемкости кода, но будет требовать существенно менее ресурсов, т к более простые классы

Вы не могли бы привести пример. Возможно я чего-то не понимаю - каким образом будет правильная отрисовка реализована?
И каким образом к моей задаче можно прикрутить динамическую подгрузку?
Не могли бы вы хотя бы на уровне каркаса пример привести. Только с учетом моей задачи ( бинарные данные - отображаю в виде строк, конец строки это 0x0a. С учетом того что данные бинарные, ни количество строк, ни их длина заранее не известны. Естественно строки могут быть абсолютно разными по размеру.
Или хотя бы описать как в моем случае организовывать подгрузку ( ведь может оказаться что у меня две строки - одна 100000 символов, другая 5, узнаю я это только после предварительного анализа данных, когда пройдусь поиском на 0x0а).


Название: Re: вывод данных ,QScrollArea
Отправлено: ikar2012 от Апрель 24, 2013, 20:03
Хорошо когда человек делает свой собственный велосипед.

Повторю совет dio - почитайте про model-View.

PS объем работы по написанию собственной model-View у вас будет колоссальный :P
так я и не хочу изобретать собственный,  я прошу конкретного совета. Про модель читал, я даже использую этот подход и довольно активно. Модели пишу сам, наследуясь от QAbstractTableModel. Но либо я что-то не понимаю, либо это не работает. Оно тормозит точно также - отрисовывая всю таблицу. Если не понимаю- то именно это я и прошу объяснить. Ни в одном примере model /view не выводится большие объемы, тем более неоднородных по длине данных , и не контролируется область вывода . Мне нужен просто аналог qtextedit, , но с возможностью не спотыкаться о 0x00, и с возможностью отсвечивать по своему каждый символ ( как реализовать через модель я знаю, но не вижу просто пока преимуществ - у меня основная проблема - время отрисовки). И какой все-таки view использовать, выводе через qtableview это будет не совсем похоже на то, что нужно, т к все символы будут друг под другом в независимости от своих размеров- а нужно чтобы выводилось в виде, как выводится текст - т е когда положение символа зависит от его физических размеров


Название: Re: вывод данных ,QScrollArea
Отправлено: Bepec от Апрель 24, 2013, 20:22
М... Нарисуйте чего вы хотите, тогда я дам вам ответ.

На 4 миллионах строк данных, модель-Вью работает бодренько - незаметно для человека.

НО! некоторые её методы реализованы так, что отсекают всю полезность модели. Тот же ресайз то контент и прочая :)

PS вы мне код не даёте посмотреть и просите сказать что не так - вам это не кажется странной надеждой на телепатию собеседника? :P


Название: Re: вывод данных ,QScrollArea
Отправлено: ikar2012 от Апрель 24, 2013, 20:28
М... Нарисуйте чего вы хотите, тогда я дам вам ответ.

На 4 миллионах строк данных, модель-Вью работает бодренько - незаметно для человека.

НО! некоторые её методы реализованы так, что отсекают всю полезность модели. Тот же ресайз то контент и прочая :)

PS вы мне код не даёте посмотреть и просите сказать что не так - вам это не кажется странной надеждой на телепатию собеседника? :P

Код смогу только завтра. Какой кусок нужен? Как на текущий момент пытаюсь рисовать приведено выше. Задачу просто можно описать так - берем любой файл ( бинарный в общем случае) открываем и видим его содержимое в окошечке, с возможностью прокрутки. Точно так же как , например , открыв его в Far через F3

Собственно вопрос - в подходе с моделью во что отображать и как контролировать отрисовку (определять viewport или что-то аналогичное) и что лучше ( и правильней) каждый раз при перерисовке заново делать пред расчет строк ( это вроде довольно быстро, пока по крайней мере) или лучше расчитывать и хранить шаблон. Что будет в одном случае и в другом понятно, но как обычно делают. Как например сделано в том же qtextedit?


Название: Re: вывод данных ,QScrollArea
Отправлено: Bepec от Апрель 24, 2013, 20:45
Кхм. Я вас немного не понимаю чего именно вы хотите. Какой идеальный вариант?

update: Мммм. Вы хотите кататься по файлу? :P Да, готовые модели Qt такой возможности не предоставляют, но... Но если поставить Скроллбар, связать его с textEdit и seek'ом ехать по файлу, такое вполне возможно, я думаю.


Название: Re: вывод данных ,QScrollArea
Отправлено: ikar2012 от Апрель 24, 2013, 21:01
Кхм. Я вас немного не понимаю чего именно вы хотите. Какой идеальный вариант?

update: Мммм. Вы хотите кататься по файлу? :P Да, готовые модели Qt такой возможности не предоставляют, но... Но если поставить Скроллбар, связать его с textEdit и seek'ом ехать по файлу, такое вполне возможно, я думаю.
Да, Вы в принципе правильно поняли. Я хочу "кататься по файлу" но TextEdit не подходит, т к он не может с бинарными данными ( проще говоря он "спотыкается" о 0x00, считая это концом, т к работает со стрингами) можно на лету конечно нули вырезать/заменять, но для данной задачи это не очень походит, можно пихать через stream, но тогда нули  теряются. Скролбар проблему не решит, потому как при отображали бинарный файл может быть не только большой по вертикали, но и по горизонтали QScrollArea как раз здесь очень к месту ( если я правильно понял практически все стандартные view используют qabstractscrollarea).
Я в принципе представляю что надо делать - вопрос только как получить реальные текущие размеры отображаемой области. Для моей реализации выше ответ вроде дали ( завтра проверю). Если вы знаете как это сделать через предложению схему с моделью - мне это тоже интересно, т к возможно в будущем облегчит дальнейшее наращивание функционала. - но  не смог подобрать подходящи view , и пока понимаю где и как получать размер viewport

Upd. Упустил. Seek не подходит в принципе , тк мне нужно отображать файл не каким-то частями ( я поэтому и писал выше, как можно воспользоваться порционным получением), а некими логическими строчками, которые заранее не известны ( последовательность заканчивающаяся 0x0a). Такую задачу обычно решает чтение текстового файла построчно, но здесь мешает такому подходу наличие не отображаемых символов ( например 0x00) , а так же непредсказуемо большая длина строки в некоторых случаях. (Если в файле 1 Мб не встретиться 0x0a- то он весь будет одной строкой)


Название: Re: вывод данных ,QScrollArea
Отправлено: Bepec от Апрель 24, 2013, 21:49
А зачем вам его получать?

Тут идёт разделение отрисовки и данных.

Виджет - View сам знает свои размеры и может ими оперировать. Благодаря тому, что известно сколько занимает один элемент (строк допустим), он запрашивает данные у модели. И уже потом отрисовывает.


Название: Re: вывод данных ,QScrollArea
Отправлено: ikar2012 от Апрель 24, 2013, 22:22
А зачем вам его получать?

Тут идёт разделение отрисовки и данных.

Виджет - View сам знает свои размеры и может ими оперировать. Благодаря тому, что известно сколько занимает один элемент (строк допустим), он запрашивает данные у модели. И уже потом отрисовывает.
тогда я что-то не понимаю. У меня QTableView при большом количестве столбцов отрисовывает медленно - из чего я делаю вывод что отрисовывает он все, а не только видимые столбцы. При этом ползунки появляются, в принципе данные двигаются - только тормозит все дико.  Попробуйте вывести таблицу например с 1000 столбцами, пусть даже строк там всего 100 будет ( это 100000 байт всего)
И вроде  , разделяются данные и представление? Разве это имеет отношение к отрисовке?
Или я все-таки что-то упустил?

Upd. Возможно имеется ввиду что модель должна определить сколько столбцов, например, ей отдать. Но во первых именно для этого и нужно сначала определить размер вывода ( т к реальных столбцов очень много) , а во вторых я не смог научиться изменять количество столбцов в таблице без операций удаления всех строк и вставки их заново. Кроме того ползунки будут "неправильно" работать, т к соответствующий класс понятия не будет иметь о реальном количестве столбцов. Можно конечно заранее определить максимальное количество столбцов, которые возможно отобразится на данном мониторе ( т е получить разрешение монитора) и всегда выводить. Но опять возникает проблема с ползунками- и честно говоря такой подход не кажется мне правильным. Как- то же делают что все правильно и быстро отображается.


Название: Re: вывод данных ,QScrollArea
Отправлено: Bepec от Апрель 24, 2013, 22:54
Конечно делают правильно ) А вы в корне ошибаетесь :)

Вы пытаетесь вывести массив байт по одному элементу, создавая на каждый свой отдельный объект. Нафига? :P

Нарисуйте как вы хотите. Просто сядьте и нарисуйте. Пейнт в руки, смеяться никто не будет ( может быть ;) ). Заодно потренируетесь в разработке дизайна.


Название: Re: вывод данных ,QScrollArea
Отправлено: dio от Апрель 24, 2013, 23:00
Попробуйте объединить данные одной строки в столбец и будет вам счастье.
 
Что касается подгрузки данных, то не зная количества строк - не реализуешь. Если все же хотите ее использовать -зафиксируйте размер столбца в байтах и вычислите количество строк.
  


Название: Re: вывод данных ,QScrollArea
Отправлено: ikar2012 от Апрель 24, 2013, 23:01
Конечно делают правильно ) А вы в корне ошибаетесь :)

Вы пытаетесь вывести массив байт по одному элементу, создавая на каждый свой отдельный объект. Нафига? :P

Нарисуйте как вы хотите. Просто сядьте и нарисуйте. Пейнт в руки, смеяться никто не будет ( может быть ;) ). Заодно потренируетесь в разработке дизайна.

Не совсем понял что имеется ввиду создавая отдельный объект элемент под каждый элемент? Это как? Я все вывожу в один объект , потомок QWidget, переопределив paintEvent.
И не понял что нарисовать? Как должно выводиться? Так чего там рисовать - это все уже есть и даже как-то работает , просто работает не приемлемо. Но "дизайн" никак не зависит и не поменяется - нужно лишь понять как правильно управлять отрисовкой


Название: Re: вывод данных ,QScrollArea
Отправлено: ikar2012 от Апрель 24, 2013, 23:07
Попробуйте объединить данные одной строки в столбец и будет вам счастье.
 
Что касается подгрузки данных, то не зная количества строк - не реализуешь. Если все же хотите ее использовать -зафиксируйте размер столбца в байтах и вычислите количество строк.
  
объеденит данные строки в столбец это как? Можно на пальцах.

Как можно зафиксировать размер столбца в описанных условиях и что это даст ( может вы имели ввиду размер строки? -но это тоже не соответсвует условиям) у меня не стоит задачи "притянуть" отображение к таблице - у меня стоит задача отобразится так как надо- т е в виде строк символов ( не важно, отображаемых или нет) с обработкой одного единственного служебного символа - перевод строки ( /n , или он же 0x0a)
Мы точно друг друга понимаем?

Ps в любом случае, всем кто пытается помочь огромное спасибо, но я правда не совсем понимаю что вы предлагаете


Название: Re: вывод данных ,QScrollArea
Отправлено: Bepec от Апрель 24, 2013, 23:23
РИСУЙ что хочешь. РИСУЙ!!!!


Название: Re: вывод данных ,QScrollArea
Отправлено: Igors от Апрель 25, 2013, 06:57
Возможно Вы и пройдете весь путь с ScrollArea, определением видимой части и.т.п. Но так будет достигнута только 1 цель: отображение. Понадобится напр выделить параграф - и опять придется сваливаться в низкоуровневую работу. Мне кажется правильно прорываться к TextEdit
Я хочу "кататься по файлу" но TextEdit не подходит, т к он не может с бинарными данными ( проще говоря он "спотыкается" о 0x00, считая это концом, т к работает со стрингами) можно на лету конечно нули вырезать/заменять, но для данной задачи это не очень походит,
Ну так или иначе нужно решать с невидимыми/неудобными символами. Допустим Вы выводите сами, через DrawText. Что меняется в этом случае?


Название: Re: вывод данных ,QScrollArea
Отправлено: alex312 от Апрель 25, 2013, 07:06
http://code.google.com/p/qhexedit2/


Название: Re: вывод данных ,QScrollArea
Отправлено: ikar2012 от Апрель 25, 2013, 08:49
Возможно Вы и пройдете весь путь с ScrollArea, определением видимой части и.т.п. Но так будет достигнута только 1 цель: отображение. Понадобится напр выделить параграф - и опять придется сваливаться в низкоуровневую работу. Мне кажется правильно прорываться к TextEdit
Я хочу "кататься по файлу" но TextEdit не подходит, т к он не может с бинарными данными ( проще говоря он "спотыкается" о 0x00, считая это концом, т к работает со стрингами) можно на лету конечно нули вырезать/заменять, но для данной задачи это не очень походит,
Ну так или иначе нужно решать с невидимыми/неудобными символами. Допустим Вы выводите сами, через DrawText. Что меняется в этом случае?
TextEdit не подходит по описанным причинам. когда рисую я просто делаю пропуск на лету, для подачи же в textedit придется скопировать и модифицировать исходные данные.


Название: Re: вывод данных ,QScrollArea
Отправлено: ikar2012 от Апрель 25, 2013, 08:50
http://code.google.com/p/qhexedit2/
За ссылку огромное спасибо. именно исходники подобного примера искал!!!!


Название: Re: вывод данных ,QScrollArea
Отправлено: ikar2012 от Апрель 25, 2013, 09:11
Командор, ваш способ работает, по крайней мере на первый взгляд. Еще раз спасибо.


Название: Re: вывод данных ,QScrollArea
Отправлено: dio от Апрель 25, 2013, 10:51
объеденит данные строки в столбец это как? Можно на пальцах.
Я имел в виду строку - в ячейку таблицы.

По второму вопросу я, всего лишь, предложил способ реализации частичной подгрузки данных, на случай если Вам требуется отображать большие файлы. Представление данных пользователю и работа с данными внутри программы - это разные задачи. Совсем не обязательно обрабатывать данные в том формате, который требуется для конечного представления пользователю.  
При загрузки данных - считать, что размер строки фиксирован, а при отображении пользователю - приводить ее к соответствующему виду (например, отображением символа перехода на новую строку, или выделением четных\нечетных строк разным цветом).  
Если такой вариант не устраивает, то можно реализовать подгрузку самому. За раз считывать определенное количество строк. На форму добавить кнопку, для загрузки следующей партии.


Название: Re: вывод данных ,QScrollArea
Отправлено: Авварон от Апрель 25, 2013, 11:17
Есть более простой пример:
https://github.com/ABBAPOH/Andromeda/blob/master/src/plugins/bineditorplugin/binedit.h
https://github.com/ABBAPOH/Andromeda/blob/master/src/plugins/bineditorplugin/binedit.cpp

По идее, этих 2х файлов достаточно для работы хексэдита. Как видно, код выдран из QtCreator и вполне рабочий (имеются несколько багов).

В целом, нужно использовать QAbstractScrollArea и рисовать на вьюпорте. Что рисовать вычисляется из значений скроллбаров и размера вьюпорта, деленный на размер шрифта.

Другое дело, не очень понятно... Как вы хотите отображать невидимы символы? Что мешает вырезать 0x00 и прочие невидимые штуки, заменив их, скажем, на пробел? После чего тупо скормить текстэдиту.

Модель-вид тут вообще ни причем.


Название: Re: вывод данных ,QScrollArea
Отправлено: ikar2012 от Апрель 25, 2013, 12:27
Есть более простой пример:
https://github.com/ABBAPOH/Andromeda/blob/master/src/plugins/bineditorplugin/binedit.h
https://github.com/ABBAPOH/Andromeda/blob/master/src/plugins/bineditorplugin/binedit.cpp

По идее, этих 2х файлов достаточно для работы хексэдита. Как видно, код выдран из QtCreator и вполне рабочий (имеются несколько багов).

В целом, нужно использовать QAbstractScrollArea и рисовать на вьюпорте. Что рисовать вычисляется из значений скроллбаров и размера вьюпорта, деленный на размер шрифта.

Другое дело, не очень понятно... Как вы хотите отображать невидимы символы? Что мешает вырезать 0x00 и прочие невидимые штуки, заменив их, скажем, на пробел? После чего тупо скормить текстэдиту.

Модель-вид тут вообще ни причем.
Да спасибо, собственно практически именно так и делаю. 0x00  в итоге естественно заменяется пробелом, если точнее, то ни чем не заменяется просто делается пропуск на длину пробела. Все это на лету при обрисовке. В исходных данных это делать совсем не удобно, т к отображение это всего лишь отображения, и для замены надо делать копию. Поэтому текстэдит не подходит. Иными словами после приведения данных в вид пригодный для текстэдит данные кроме как для отображения ни для чего не годятся. А отображение, как понимаете, не является конечной целью. кроме того цвет подсветки каждого символа тоже рассчитывается динамически и зависит от многих, постоянно меняющихся факторов. Так что пока остановился на ScrollArea. Примеры начал смотреть, возможно что-то новое в них найду

Собственно вопрос был как получить viewport. Ответ получил выше, проверил. работает.
зы за пример отдельное спасибо


Название: Re: вывод данных ,QScrollArea
Отправлено: ikar2012 от Апрель 25, 2013, 12:30
объеденит данные строки в столбец это как? Можно на пальцах.
Я имел в виду строку - в ячейку таблицы.

По второму вопросу я, всего лишь, предложил способ реализации частичной подгрузки данных, на случай если Вам требуется отображать большие файлы. Представление данных пользователю и работа с данными внутри программы - это разные задачи. Совсем не обязательно обрабатывать данные в том формате, который требуется для конечного представления пользователю.  
При загрузки данных - считать, что размер строки фиксирован, а при отображении пользователю - приводить ее к соответствующему виду (например, отображением символа перехода на новую строку, или выделением четных\нечетных строк разным цветом).  
Если такой вариант не устраивает, то можно реализовать подгрузку самому. За раз считывать определенное количество строк. На форму добавить кнопку, для загрузки следующей партии.


с таблицей понял. Кака вариант, но придется писать делегат писать практически по побъему как то, что я сейчас делаю, т к в нем все равно надо отображать бинарные данные и подсвечивать их. В данном случае появляется доп прослойка, выигрыш пока не ясен.

Что касается считывания - нельзя никак на практике там зафиксировать строку. вы любой бинарник в виде текста откройте, и поймете о чем я


Название: Re: вывод данных ,QScrollArea
Отправлено: lighting от Апрель 25, 2013, 13:18
ну отчего же нельзя фиксированную длину строки задать? Выставите что у вас длина строки равна ширина viewport / ширину символа и переносите все что не влезает на следующую. В бинарном файле смысл символа перевода строки пропадает, и нет причин переносить строку только там где  он случайно в бинарике появляется.


Название: Re: вывод данных ,QScrollArea
Отправлено: ikar2012 от Апрель 25, 2013, 13:40
ну отчего же нельзя фиксированную длину строки задать? Выставите что у вас длина строки равна ширина viewport / ширину символа и переносите все что не влезает на следующую. В бинарном файле смысл символа перевода строки пропадает, и нет причин переносить строку только там где  он случайно в бинарике появляется.
Вы предлагаете подстроить логику "как удобно для разработки", жертвуя логикой  поставленной задачи.
Мне нужно отображать так , как поставлена задача. Практический смысл в этом есть. В моем случае "смысл" перевода строки не пропадает.


Название: Re: вывод данных ,QScrollArea
Отправлено: ikar2012 от Апрель 25, 2013, 14:38
Проблема решена (вроде  :) ) Спасибо всем откликнувшимся.
Отдельное спасибо за примеры.Очень помогли.


Название: Re: вывод данных ,QScrollArea
Отправлено: lighting от Апрель 25, 2013, 15:29
ikar2012 видимо вы не очень подробно этот смысл описали, не представляю для чего так формулировать задачу, впрочем вам наверное виднее.


Название: Re: вывод данных ,QScrollArea
Отправлено: ikar2012 от Апрель 25, 2013, 15:51
ikar2012 видимо вы не очень подробно этот смысл описали, не представляю для чего так формулировать задачу, впрочем вам наверное виднее.
Я смысл задачи (в смысле полностью проекта, а не локального функционала), не только не описывал, я даже его не упоминал. мне нужна была помощь по конкретной проблеме, в которую я уткнулся. Те кто не пытался понять зачем мне это надо, а пытался понять что мне надо - помогли мне (написав, кстати минимум букв), за что им еще раз спасибо.
тем не менее еще раз спасибо всем за участие.

ps  разместил проблему на трех форумах - здесь быстро помогли, на другом так и не ответил никто, на третьем тоже уперлись в " а нафига так надо" :)



Название: Re: вывод данных ,QScrollArea
Отправлено: lighting от Апрель 26, 2013, 09:27
ikar2012 почитав темы на этом форуме вы поймете что такой случай скорее исключение чем правило. В большинстве случаев топикстартер пишет "хочу такую-то фигню, но не выходит, подскажите как" и в когда удается узнать для чего ему это то обычно все решается совсем другим способом и гораздо проще. Безусловно бывают ситуации когда нужно "именно так" но обычно топикстартер видя проблему все время под одним углом не замечает альтернативных способов решения. Так что не стоит считать что люди которые пытаются бескорыстно вам помочь "уперлись" просто так, возможно на это есть веские основания.


Название: Re: вывод данных ,QScrollArea
Отправлено: Bepec от Апрель 26, 2013, 09:34
Поддержу lighting.

Нужно описывать общую проблему, а путей решения множество. И то, что вы видите один, не значит, что их не может быть сотен дополнительных и более простых ;)


Название: Re: вывод данных ,QScrollArea
Отправлено: Авварон от Апрель 26, 2013, 10:23
+1.