[QML] прокрутка таблицы
От: SaZ  
Дата: 19.07.23 11:08
Оценка:
Всем доброго дня

Мне хочется сделать возможность прокрутки таблицы (TableView) ниже чем по умолчанию позволяет скроллбар, так чтобы нижняя строка была посередине вьюхи. Как это лучше сделать? Добавлять фейковые элементы в конец не хочется, потому что данные идут из С++ модели. Что-то типа Flickable но для таблицы и без отката назад.
Пытался гуглить, не нашёл ничего ценного. Не хочется переизобретать с нуля TableView для таких целей.
Re: [QML] прокрутка таблицы
От: Qt-Coder  
Дата: 19.07.23 12:19
Оценка:
Здравствуйте, SaZ, Вы писали:

SaZ>Всем доброго дня


SaZ>Мне хочется сделать возможность прокрутки таблицы (TableView) ниже чем по умолчанию позволяет скроллбар, так чтобы нижняя строка была посередине вьюхи. Как это лучше сделать? Добавлять фейковые элементы в конец не хочется, потому что данные идут из С++ модели. Что-то типа Flickable но для таблицы и без отката назад.

SaZ>Пытался гуглить, не нашёл ничего ценного. Не хочется переизобретать с нуля TableView для таких целей.

Выцепить verticalScrollBar() и приплюсовать ему maximum?
Re: [QML] прокрутка таблицы
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 24.07.23 00:26
Оценка:
Здравствуйте, SaZ, Вы писали:

SaZ>Пытался гуглить, не нашёл ничего ценного. Не хочется переизобретать с нуля TableView для таких целей.

На ум приходит анимация проперти высота TableView и заполнение пространства снизу невидимым прямоугольником, тоже анимированным по высоте и анхоры друг на друга прицепить чтобы позиционирвоание работало.
Rectangle {
  Reactangle {
    TableView {}
    heigth: max
  }
  Recatnagle {
     heigth: 0
  }
}

Ну и триггер начала анимаций это скорлл до последнего элемента. Конечно, всё через проперти биндинг лучше делать чтобы не писать много кода.
А можно и без невидимых прямоугольников, просто высоту обрамляющего прямоугольника анимировано менять.
Sic luceat lux!
Re[2]: [QML] прокрутка таблицы
От: SaZ  
Дата: 24.07.23 12:16
Оценка:
Здравствуйте, Qt-Coder, Вы писали:

QC>Здравствуйте, SaZ, Вы писали:


SaZ>>Всем доброго дня


SaZ>>Мне хочется сделать возможность прокрутки таблицы (TableView) ниже чем по умолчанию позволяет скроллбар, так чтобы нижняя строка была посередине вьюхи. Как это лучше сделать? Добавлять фейковые элементы в конец не хочется, потому что данные идут из С++ модели. Что-то типа Flickable но для таблицы и без отката назад.

SaZ>>Пытался гуглить, не нашёл ничего ценного. Не хочется переизобретать с нуля TableView для таких целей.

QC>Выцепить verticalScrollBar() и приплюсовать ему maximum?


Если честно, я ещё дилетант в qml. Не нашёл у него никаких пропертей связанных с maximum. Вижу только size но судя по документации это не то.
Пробую играться с ручным переопределением contentHeight, но появляются какие-то странные артефакты.
Re[2]: [QML] прокрутка таблицы
От: SaZ  
Дата: 24.07.23 12:17
Оценка:
Здравствуйте, Kernan, Вы писали:

K>Здравствуйте, SaZ, Вы писали:


SaZ>>Пытался гуглить, не нашёл ничего ценного. Не хочется переизобретать с нуля TableView для таких целей.

K>На ум приходит анимация проперти высота TableView и заполнение пространства снизу невидимым прямоугольником, тоже анимированным по высоте и анхоры друг на друга прицепить чтобы позиционирвоание работало.
K>
K>Rectangle {
K>  Reactangle {
K>    TableView {}
K>    heigth: max
K>  }
K>  Recatnagle {
K>     heigth: 0
K>  }
K>}
K>

K>Ну и триггер начала анимаций это скорлл до последнего элемента. Конечно, всё через проперти биндинг лучше делать чтобы не писать много кода.
K>А можно и без невидимых прямоугольников, просто высоту обрамляющего прямоугольника анимировано менять.

Можно и без анимаций. Мы не сильно заморачиваемся, это служебное десктопное приложение. Но пока не получается добиться нужного эффекта.
Re: Решение
От: SaZ  
Дата: 27.07.23 07:52
Оценка: 3 (1)
Здравствуйте, SaZ, Вы писали:

SaZ>Всем доброго дня


SaZ>Мне хочется сделать возможность прокрутки таблицы (TableView) ниже чем по умолчанию позволяет скроллбар, так чтобы нижняя строка была посередине вьюхи. Как это лучше сделать? Добавлять фейковые элементы в конец не хочется, потому что данные идут из С++ модели. Что-то типа Flickable но для таблицы и без отката назад.

SaZ>Пытался гуглить, не нашёл ничего ценного. Не хочется переизобретать с нуля TableView для таких целей.

Всё оказалось достаточно тривиально. Вырезал всю кастомную работу со скроллом и выставил bottomMargin: height / 2.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.