Название: QTableWidget - конструирование сложной таблицы Отправлено: kolob от Декабрь 14, 2012, 17:25 Добрый день уважаемое сообщество.
Есть у меня небольшая тема для обсуждения. Может быть кто с этим сталкивался, но на просторах сети я не нашел примера. Вот в чем задача создать таблицу, но не простую - столбцы и колонки, а немного усложненную (скрин прилагаю.) И в эту таблицу данные не просто выгружаются, но приходится добавлять новые строки, которые могут находится в разных группах и разделах, а также удаление и редактирование. Первое мое решение в QTableWidget каждой строке находилась отдельная таблица QTableWidget, представляющая раздел верхнего уровня, а в ее строке таблица представляющая Группу и в неё же далее добавляется строка с данными. Но как то это решение мне уже не особо нравится с увеличением этих QTableWidget. Т.е. структура такова: Цитировать Диалог и в нем QTableWidget и т.д.| +-строка это QTableWidget - header | +-строка это QTableWidget - group | | | +-строка это QTableWidgetItem - мы +-строка это QTableWidget - group Короче налепил я много чего. Хотел бы узнать, может быть как то иначе это все можно сделать? Сейчас пытаю переделать все, вернутся к одной таблице, и добавлять все заголовки и группы как обычные итемы. Название: Re: QTableWidget - конструирование сложной таблицы Отправлено: Bepec от Декабрь 14, 2012, 17:40 Разве древовидная модель не позволяет сделать это?
Хм. Могу ошибаться, но где то уже реализовывалось такое в темах. Название: Re: QTableWidget - конструирование сложной таблицы Отправлено: kolob от Декабрь 14, 2012, 17:43 Цитировать Разве древовидная модель не позволяет сделать это? Вы предлагаете использовать MVC. Но а как же быть со строками которых в модели нет и не может быть, а которые добавляются непосредственно в tablewidget например сумма по элементам в группе? Цитировать Хм. Могу ошибаться, но где то уже реализовывалось такое в темах. если найдете скинте ссылку посмотреть.Название: Re: QTableWidget - конструирование сложной таблицы Отправлено: lit-uriy от Декабрь 14, 2012, 18:50 >Но а как же быть со строками которых в модели нет
дак сделать свою модель. Название: Re: QTableWidget - конструирование сложной таблицы Отправлено: kolob от Декабрь 14, 2012, 23:05 Цитировать дак сделать свою модель. Своя модель это конечно хорошо. Но когда много таких форм где таблицы могут (~15-20) отличатся по структуре. Для каждой создавать модель, как то накладно будет.Название: Re: QTableWidget - конструирование сложной таблицы Отправлено: Bepec от Декабрь 15, 2012, 11:56 Значит нужно создать свою универсальную модель. От которой бушь наследоваться и создавать свои. Или же интерпретатор напиши. Чтобы допустим текст в определённом формате конвертировался в данные для таблицы.
Название: Re: QTableWidget - конструирование сложной таблицы Отправлено: kolob от Декабрь 16, 2012, 09:29 а что вы скажите, если банально использовать QTableWidget и добавлять туда строки с данными из БД
Название: Re: QTableWidget - конструирование сложной таблицы Отправлено: Bepec от Декабрь 16, 2012, 10:11 Ничего не скажу :D Вполне возможно.
Название: Re: QTableWidget - конструирование сложной таблицы Отправлено: kolob от Декабрь 16, 2012, 10:26 Bepec спасибо за советы
Название: Re: QTableWidget - конструирование сложной таблицы Отправлено: Bepec от Декабрь 16, 2012, 12:11 Да что вы, ничего превосходного я не насоветовал. Так, обычные тяготы :)
Название: Re: QTableWidget - конструирование сложной таблицы Отправлено: panAlexey от Декабрь 16, 2012, 17:52 Добрый день уважаемое сообщество. Предлагаю разделить задачу на части, т.е. ты делаешь:Есть у меня небольшая тема для обсуждения. Может быть кто с этим сталкивался, но на просторах сети я не нашел примера. Вот в чем задача создать таблицу, но не простую - столбцы и колонки, а немного усложненную (скрин прилагаю.) - форма с деревом и таблица элементов - это для ввода новых элементов. - Форма соответственно для редактирования этих элементов или что там у тебя. - Отчет, куда все это выводится как на скрине. А в отчете уже группируй и суммируй как тебе вздумается. П.С. Ты просто смешал сущности и уперся в это кровосмешение. Сейчас пытаю переделать все, вернутся к одной таблице, и добавлять все заголовки и группы как обычные итемы. Это ты себе только проблемы создаешь.ПС2. Опиши задачу абстрактно, не смету ли считаешь? Название: Re: QTableWidget - конструирование сложной таблицы Отправлено: kolob от Декабрь 16, 2012, 18:37 Цитировать Предлагаю разделить задачу на части, т.е. ты делаешь: - форма с деревом и таблица элементов - это для ввода новых элементов. - Форма соответственно для редактирования этих элементов или что там у тебя. - Отчет, куда все это выводится как на скрине. А в отчете уже группируй и суммируй как тебе вздумается. П.С. Ты просто смешал сущности и уперся в это кровосмешение. Дело в том что все перечисленное должно выполнятся в одной форме, как в экселе. Цитировать Это ты себе только проблемы создаешь. В чем тут проблема? Конечно с моделью было бы легче.Название: Re: QTableWidget - конструирование сложной таблицы Отправлено: panAlexey от Декабрь 16, 2012, 18:41 Цитировать Предлагаю разделить задачу на части, т.е. ты делаешь: Дело в том что все перечисленное должно выполнятся в одной форме, как в экселе.- форма с деревом и таблица элементов - это для ввода новых элементов. - Форма соответственно для редактирования этих элементов или что там у тебя. - Отчет, куда все это выводится как на скрине. А в отчете уже группируй и суммируй как тебе вздумается. П.С. Ты просто смешал сущности и уперся в это кровосмешение. А что за задача? Что конкретно считаешь? Смету? ПС. Я бы все равно разделил бы формы ввода и отчетность = это тру путь. Название: Re: QTableWidget - конструирование сложной таблицы Отправлено: kolob от Декабрь 16, 2012, 19:17 Цитировать ПС. Я бы все равно разделил бы формы ввода и отчетность = это тру путь. Я бы тоже так сделал. Но как говорится, кто платит, тот и заказывает музыку. Приложение с кучей форм (причем различных по структуре, некоторые даже по горизонтали расширяются), в которых считается доход, расход и т.д. по различным группам и все вместе. Вот так. Предложение сделать универсальную модель -это конечно кое что, но затратно по времени. Поэтому делаю в лоб. В ручную добавляю строки и т.д. Название: Re: QTableWidget - конструирование сложной таблицы Отправлено: panAlexey от Декабрь 16, 2012, 20:32 Приложение с кучей форм (причем различных по структуре, некоторые даже по горизонтали расширяются), в которых считается доход, расход и т.д. по различным группам и все вместе. Всего-то...Я такую сложную таблицу делал только один раз помнится - когда небольшая фирма торговала молочными продуктами и поставки были ограниченного объема и надо было тщательно разбросать объем по заявкам и не превысить остаток на складе. 40 или 50 покупателей - на каждого покупателя по 4 колонки, сверху итоги, по строкам продукты с остатками и количеством заявочное кол-во и кол-во к отгрузке. При окончательной обработке создавались кипа документов в 1С. По слухам потом мою обработку предприимчивый прог загнал 5-6 подобным фирмам за нехилтон сумму денюг :) Извратов конечно в этом мире дофига, но есть и нужные извраты :) Название: Re: QTableWidget - конструирование сложной таблицы Отправлено: kolob от Декабрь 16, 2012, 21:46 Вот вот, что то вроде того. Только вот нет сопряжения с 1с. Но там своего замута хватает. Еще кучу графиков строить по различным данным.
Надо было самому загнать куче фирм за кучу денег :) Название: Re: QTableWidget - конструирование сложной таблицы Отправлено: panAlexey от Декабрь 16, 2012, 23:32 Вот вот, что то вроде того. Только вот нет сопряжения с 1с. Но там своего замута хватает. Еще кучу графиков строить по различным данным. Я её в самой 1С рисовал. Надо было самому загнать куче фирм за кучу денег :) На Qt геморойнее будет. раза в 5-6. У меня там 2100 строк вышло. Название: Re: QTableWidget - конструирование сложной таблицы Отправлено: kolob от Январь 06, 2013, 14:48 Цитировать Значит нужно создать свою универсальную модель. От которой бушь наследоваться и создавать свои. А подскажите пример 2 го наследования от абстрактной модели. Какие функции переопределять в наследнике а какие в наследнике наследника? Немного разобрался. Не знал где выставить корневую вершину, в прямом наследнике абстрактного класса или в последующих. Все таки решил сделать в прямом и там же описать все необходимые функции. А в наследниках наследника описал функции, которые отличают разные модели, например columnCount() (в моделях разное количество столбцов) P.S. Решил все таки пойти путем который мне подсказали (создать модель). В своем прежнем решении зашел в тупик полнейший, очень много данных, короче жутко неудобно. Давно считал, что для большинства случаев лучше использовать MVC. Название: Re: QTableWidget - конструирование сложной таблицы Отправлено: kolob от Январь 07, 2013, 20:31 Споткнулся. Как же иерархическую модель засунуть в TableView?
Не могу найти решения, слышал про ProxyModel. Может кто сталкивался, поделится идеей или кодом, буду признателен. Название: Re: QTableWidget - конструирование сложной таблицы Отправлено: Авварон от Январь 07, 2013, 21:31 Зачем теблвью? Это же банальное дерево, только indentation уберите.
Название: Re: QTableWidget - конструирование сложной таблицы Отправлено: kolob от Январь 07, 2013, 22:10 А как сделать в treeview сделать чтобы строка-заголовок расползался на все колонки?
Там вроде нет setSpan как в тэблевью. Название: Re: QTableWidget - конструирование сложной таблицы Отправлено: Авварон от Январь 07, 2013, 23:11 drawRow переопределить.
Название: Re: QTableWidget - конструирование сложной таблицы Отправлено: kolob от Январь 07, 2013, 23:23 а функция setFirstColumnSpanned, вроде так называется , где то причитал что делает что то подобное.
Да дерево собственно и не нужно просто надо как таблица она выглядела. Название: Re: QTableWidget - конструирование сложной таблицы Отправлено: Авварон от Январь 08, 2013, 13:27 а функция setFirstColumnSpanned, вроде так называется , где то причитал что делает что то подобное. Да дерево собственно и не нужно просто надо как таблица она выглядела. Прикольно, не знал про эту функцию:) Да, это то, что вам надо. Уберите отступ у дерева, запретите сворачивание и получите иерархическую таблицу. Название: Re: QTableWidget - конструирование сложной таблицы Отправлено: kolob от Февраль 10, 2013, 21:21 есть у кого нибудь пример такой реализации, если есть скиньте скрин что получилось. А то что то надоело проект переделывать по несколько раз.
Мне необходимо что то вроде(желательно конечно точно) как на скрине в первом посте. |