Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: hotsanchous от Июль 08, 2010, 11:36



Название: QTablewidget / QTableView подкиньте идею.....
Отправлено: hotsanchous от Июль 08, 2010, 11:36
Хочу сделать так, чтобы очень длинная таблица(например 1000 строк) при достижении нижней границы контейнера не включала скрол, а переносила содержимое в другую колонку справа(например их на экране может быть 3 и более), а при изменении размера окна строки корректно распределялись бы между этими колонками. Что-то аналогичное можно увидеть в файловом менеджере Far при выводе списка файлов... Сломал себе уже всю голову.


Название: Re: QTablewidget / QTableView подкиньте идею.....
Отправлено: lit-uriy от Июль 08, 2010, 12:11
тут наверное своё представление писать лучше, сильно специфичное поведение


Название: Re: QTablewidget / QTableView подкиньте идею.....
Отправлено: hotsanchous от Июль 08, 2010, 12:20
а может хотя бы идею подкинешь, при помощи чего вообще такое можно замутить??? Я просто пока слабо себе представляю все возможности Qt, понял только что возможностей у него куча :)))


Название: Re: QTablewidget / QTableView подкиньте идею.....
Отправлено: Hordi от Июль 08, 2010, 12:39
Если втупую, то переопределяешь resizeEvent, в нем высчитываешь кол-во строк на экране исходя из высоты каждой записи, если не влазят на экран - добавляешь колонку и переносишь записи в нее и т.д.


Название: Re: QTablewidget / QTableView подкиньте идею.....
Отправлено: Ultra от Июль 08, 2010, 12:44
Думаю можно написать функцию распределения информации по таблице. Загоняем всю инфу в QStringList, определяем кол-во доступных строк в столбце (я не знаю можно ли это сделать, с таблицами в QT еще не работал). Кол-во элементов массива делим на кол-во доступных строк и округляем в большую сторону, по идеи получим минимальное кол-во необходим столбцов для распределения всей информации. Потом включаем цикл самого распределения, то есть, у нас есть i (номер элемента массива) и пока этот номер меньше максимально допустимого значения строки столбца j=0, потом уже j=1, j=2.... j=n. где j - номер столбца.
Ну а уже при ресайзе окна и изменение таблицы вызывать функцию. Но это только теория и то если я правильно понял задачу.
p.s. первый пост :)


Название: Re: QTablewidget / QTableView подкиньте идею.....
Отправлено: hotsanchous от Июль 08, 2010, 12:56
Всем спасибо за ответы. Я ,в принципе, тоже предполагал именно такой ход решения проблемы(с пересчетом записей), но ,как всегда,  хотелось халявы :))) Думал может есть какие стандартные примочки. Халявы не будет => РАБОТАТЬ :)))


Название: Re: QTablewidget / QTableView подкиньте идею.....
Отправлено: GreatSnake от Июль 08, 2010, 13:08
А чем не подходит QListView с QListView::setFlow( LeftToRight )?


Название: Re: QTablewidget / QTableView подкиньте идею.....
Отправлено: hotsanchous от Июль 08, 2010, 19:18
А чем не подходит QListView с QListView::setFlow( LeftToRight )?
Как я понял это дает только одну запись в колонке, а мне надо в колонку записей до упора, а лишь потом переходить в другую колонку.


Название: Re: QTablewidget / QTableView подкиньте идею.....
Отправлено: GreatSnake от Июль 09, 2010, 10:52
Цитировать
Как я понял это дает только одну запись в колонке, а мне надо в колонку записей до упора, а лишь потом переходить в другую колонку.
Чего-то я не понимаю чего вам нужно. Допустим у вас не 1000 строк, а всего одна. Сколько колонок у вас должно быть в этом случае?


Название: Re: QTablewidget / QTableView подкиньте идею.....
Отправлено: hotsanchous от Июль 09, 2010, 11:44
Цитировать
Как я понял это дает только одну запись в колонке, а мне надо в колонку записей до упора, а лишь потом переходить в другую колонку.
Чего-то я не понимаю чего вам нужно. Допустим у вас не 1000 строк, а всего одна. Сколько колонок у вас должно быть в этом случае?
В этом случае 1. Наглядный пример - список файлов в панели файлового менеджера Far.


Название: Re: QTablewidget / QTableView подкиньте идею.....
Отправлено: GreatSnake от Июль 09, 2010, 11:51
Цитировать
В этом случае 1. Наглядный пример - список файлов в панели файлового менеджера Far.
Тогда я не понимаю почему вас не устраивает QListView. См. для примера QFileDialog в режиме просмотра "Список".