Russian Qt Forum

Qt => Model-View (MV) => Тема начата: SibViking от Май 26, 2010, 18:03



Название: Горизонтальное дерево(таблица дерево) help
Отправлено: SibViking от Май 26, 2010, 18:03
Реализуем тут один научный проект... Вообщем собственно проблема, нужен компонент для реализации представления матриц. Хотелось бы получить универсальную таблицу- представление, отображающую множество двумерных матриц N x M. Так то можно настроить стандартное табличное представление через модель таким образом, чтобы она последовательно друг за другом в колонки выводила все матрицы (чтобы  их отличать друг от друга можно раскрасить разным цветом). Однако матрицы могут быть сильно громоздкими и для их функциональности хотелось бы их сворачивать по аналогии с деревом. Только здесь дерево нужно горизонтальное а не вертикальное как в стандартном компоненте QTreeView. Я уже частично написал представление, наследованное от QTableView, повесил туда замороженную строку внизу, в которую делегатом воткнул "плюсики". (см. вложение). И теперь собственно хочется понять как реаизован механизм дереева  ??? в компоненте QTreeView (код), чтобы сделать разворачивающуюся матрицу или может кто подскажет более элегантное решение. Буду признателен.


Название: Re: Горизонтальное дерево(таблица дерево) help
Отправлено: spectre71 от Май 29, 2010, 11:59
Реализуем тут один научный проект... Вообщем собственно проблема, нужен компонент для реализации представления матриц. Хотелось бы получить универсальную таблицу- представление, отображающую множество двумерных матриц N x M. Так то можно настроить стандартное табличное представление через модель таким образом, чтобы она последовательно друг за другом в колонки выводила все матрицы (чтобы  их отличать друг от друга можно раскрасить разным цветом).

Зачем все в одной куче ??? Не надо издеваться над пользователями :)
Сделай отдельно навигацию по матрицам(видимо твое дерево) и таблицу в которой показывается выбранная матрица.



Название: Re: Горизонтальное дерево(таблица дерево) help
Отправлено: SibViking от Май 30, 2010, 02:43

Зачем все в одной куче ??? Не надо издеваться над пользователями :)
Сделай отдельно навигацию по матрицам(видимо твое дерево) и таблицу в которой показывается выбранная матрица.


Да просто тут смысл  в том чтобы таблица содержала определенный набор данных, которые являются входами выходами определенных алгоритмов, реализующихся в одном объекте (методе), а данные объекты связываются за счтет входов и выходов друг с другом в глобальной схеме расчета; матрица - это по сути элементарный вход и выход одного объекта, таблица есть отражение всех входов или выходов одного объекта....  - вообщем долго объяснять :) поэтому представление матрицы в одной таблице не удобно для данной концепции


Название: Re: Горизонтальное дерево(таблица дерево) help
Отправлено: SibViking от Июнь 04, 2010, 10:42
Как вижу, ни у кого светлых идей не родилось - печально:(...    Как говориться "Если долго мучиться, что нибудь получится", Вообщем сделал я необходимый виджет, код конечно нужно еще довести до ума, но в целом работает так, как я хотел (см. вложение). После реализации возникли некоторые проблемы:
1) возникли проблемы с иерархическим заголовком, который брал отсюда  (http://qt-apps.org/content/show.php/HierarchicalHeaderView?content=103154) - иногда заголовок почему то не раскрывается и не показывает нижестоящий 2 уровень, при этом если попытаться растянуть заголовок - 2 уровень появляется ???
2) опять же связано с этим заголовком, для реализации заголовка нужно вводить в модель переменную QStandardItemModel _horizontalHeaderModel, при этом если модель используется для двух представлений, то происходит зависание программы, так как одно представление уже использует QStandardItemModel _horizontalHeaderModel для заголовка. По идее можно сделать список этих самых  _horizontalHeaderModel, но мне кажется это не оптимально  ???
Из второй проблемы я вообще пришел к выводу что у меня попусту расходуется память. Дело все в том что у меня есть компонет tabWidget, в котором во вкладках создаются таблицы-представления, подключаемые к одной модели данных. При этом в зависимости от индекса вкладки модель посылает необходимую информацию в находящеюся на вкладке таблицу. По идее мне не нужно много виджетов таблиц во вкладках.- мне нужен один виджет с таблицей, который бы отображался во всех создаваемых вкладках. Можно ли такое извращение сделать с tabWidget-ом? Чтоб все вкладки отражали только один и тот же виджет, при этом вкладки играли бы только роль кнопки переключателя для модели. Может кто что посоветует по этому поводу :\


Название: Re: Горизонтальное дерево(таблица дерево) help
Отправлено: ManOfOrange от Ноябрь 30, 2010, 10:52
Здравствуйте!
А не могли бы вы поделиться исходниками? А то интересуют кое-какие вопросы реализации...

Если не секрет, конечно :-)


Название: Re: Горизонтальное дерево(таблица дерево) help
Отправлено: SibViking от Ноябрь 30, 2010, 12:39
Да не секрет, только сразу предупреждаю, что я не программист поэтому код не совсем оптимален :)


Название: Re: Горизонтальное дерево(таблица дерево) help
Отправлено: ManOfOrange от Ноябрь 30, 2010, 14:58
Ой, да ладно, главное, код работает, а это сейчас важнее мне :-)