Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QTableWidget с закреплёнными слолбцами
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
NicNici
Можно ли в QTableWidget закрепить первый и последний столбец, что бы при прокрутке они оставались на своих позициях, а столбцы между ними прокручивались?
Алексей1153
NicNici, вроде нет такой фичи, но есть следующие идеи:

------------------------------
вариант 1:

берём два одинаковых по количеству колонок виджета (QTableWidget) T0 и T1,
T1 размещается на T0 как чайлд (без использования компоновщика, чтобы не было спонтанных изменений размера).
T1 делается по высоте равным T0
T1 делается по ширине таким, чтобы слева и справа остались виднЫ нужные (первая и последняя) колонки T0
левый край T0 совмещается с правым краем первой колонки.
Также на T1 скрываются колонки первая и последняя

модели обеих таблиц - одинакового класса - отображают данные из одного источника (но экземпляров модели - два, так как один экземпляр нельзя в два просмотра толкать)

В итоге, визуально имеем T1 без первой и последней колонок, остальные колонки мотаются. Справа и слева видны торчащие колонки T0 (первая и последня). Ну и нужно синхронизировать вертикальную прокрутку

плюсы: полная функциональность таблиц
минусы: придётся плотно посидеть с напильником
------------------------------
вариант 2:

скрыть первую и последнюю колонки
добавить виджету широкий border слева и справа, где вручную отрисовать имитацию колонок

плюсы: "малоинвазивность"
минусы: отрисовка вручную, ну и функционал колонок нужно реализовывать вручную, если нужна интерактивность
NicNici
Спасибо Алексей1153 за варианты.
Сам я реализовал следующим образом.
Размещаю на виджете QTableWidget и QScrollBar. Из ширины QTableWidget->viewport()->size().width() вычитаю ширину столбцов которые закреплены (не перемещающиеся по скроллингу). Из оставшейся ширины вычисляю, сколько колонок помещается. Те, которые не помещаются, делаю их скрытыми (setColumnHidden). У скроллинга задаю setMaximum равную количеству скрытых столбцов. При перемещении ползунка скроллинга скрываю одни и отображаю другие столбцы.
Алексей1153
NicNici, ну, то есть, ты прокрутку как таковую не делаешь, ты управляешь скрытостью колонок в зависимости от положения плашки скрола

но при таком варианте не получится попиксельную прокрутку сделать, будет только рывками. Если это устраивает, то нормуль )

но лично я бы поленился это всё вычислять :)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.