QTableWidget с закреплёнными слолбцами |
Здравствуйте, гость ( Вход | Регистрация )
QTableWidget с закреплёнными слолбцами |
NicNici |
30.1.2019, 14:37
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 15.6.2012 Пользователь №: 3421 Спасибо сказали: 0 раз(а) Репутация: 0 |
Можно ли в QTableWidget закрепить первый и последний столбец, что бы при прокрутке они оставались на своих позициях, а столбцы между ними прокручивались?
|
|
|
Алексей1153 |
31.1.2019, 11:09
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
NicNici, вроде нет такой фичи, но есть следующие идеи:
------------------------------ вариант 1: берём два одинаковых по количеству колонок виджета (QTableWidget) T0 и T1, T1 размещается на T0 как чайлд (без использования компоновщика, чтобы не было спонтанных изменений размера). T1 делается по высоте равным T0 T1 делается по ширине таким, чтобы слева и справа остались виднЫ нужные (первая и последняя) колонки T0 левый край T0 совмещается с правым краем первой колонки. Также на T1 скрываются колонки первая и последняя модели обеих таблиц - одинакового класса - отображают данные из одного источника (но экземпляров модели - два, так как один экземпляр нельзя в два просмотра толкать) В итоге, визуально имеем T1 без первой и последней колонок, остальные колонки мотаются. Справа и слева видны торчащие колонки T0 (первая и последня). Ну и нужно синхронизировать вертикальную прокрутку плюсы: полная функциональность таблиц минусы: придётся плотно посидеть с напильником ------------------------------ вариант 2: скрыть первую и последнюю колонки добавить виджету широкий border слева и справа, где вручную отрисовать имитацию колонок плюсы: "малоинвазивность" минусы: отрисовка вручную, ну и функционал колонок нужно реализовывать вручную, если нужна интерактивность Сообщение отредактировал Алексей1153 - 31.1.2019, 11:10 |
|
|
NicNici |
5.2.2019, 16:58
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 15.6.2012 Пользователь №: 3421 Спасибо сказали: 0 раз(а) Репутация: 0 |
Спасибо Алексей1153 за варианты.
Сам я реализовал следующим образом. Размещаю на виджете QTableWidget и QScrollBar. Из ширины QTableWidget->viewport()->size().width() вычитаю ширину столбцов которые закреплены (не перемещающиеся по скроллингу). Из оставшейся ширины вычисляю, сколько колонок помещается. Те, которые не помещаются, делаю их скрытыми (setColumnHidden). У скроллинга задаю setMaximum равную количеству скрытых столбцов. При перемещении ползунка скроллинга скрываю одни и отображаю другие столбцы. |
|
|
Алексей1153 |
6.2.2019, 9:21
Сообщение
#4
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
NicNici, ну, то есть, ты прокрутку как таковую не делаешь, ты управляешь скрытостью колонок в зависимости от положения плашки скрола
но при таком варианте не получится попиксельную прокрутку сделать, будет только рывками. Если это устраивает, то нормуль ) но лично я бы поленился это всё вычислять |
|
|
Текстовая версия | Сейчас: 3.1.2025, 4:04 |