crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QTableWidget с закреплёнными слолбцами
NicNici
  опции профиля:
сообщение 30.1.2019, 14:37
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 15.6.2012
Пользователь №: 3421

Спасибо сказали: 0 раз(а)




Репутация:   0  


Можно ли в QTableWidget закрепить первый и последний столбец, что бы при прокрутке они оставались на своих позициях, а столбцы между ними прокручивались?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 31.1.2019, 11:09
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2886
Регистрация: 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


фрилансер
******

Группа: Участник
Сообщений: 2886
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


NicNici, ну, то есть, ты прокрутку как таковую не делаешь, ты управляешь скрытостью колонок в зависимости от положения плашки скрола

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

но лично я бы поленился это всё вычислять :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 19.10.2019, 1:07