Russian Qt Forum
Ноябрь 26, 2024, 20:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QHeaderView Child scroll problems  (Прочитано 4461 раз)
djassan
Гость
« : Май 18, 2010, 14:08 »

Здравствуйте!
Создал класс наследник от QHeaderView, внутри ничего кроме метода заполнения данными.
И плюс прямо в конструкторе прописал setHorizontalScrollBarPolicy( Qt::ScrollBarAsNeeded );
Scroll есть, но при перемещении бегунка ничего не происходит, хотя по идее должно - весь header не вмещается в окно.
Попробовал написал свой метод реакции на перемещение бегунка, состоящий из вызова одного метода scroll(value,0) (унаследована от QWidget::scroll(int dx,int dy))
Но тогда перемещается вообще весь header, вместе со своим внутренним scrollBar, то есть вся ScrollArea что и понятно.
Как быть-то?
Как сделать работающий горизонтальный скролл для моего наследника от QHeaderView?
Создавать для него новую QScrollArea плохо, зачем, если у него своя есть встроенная.
Записан
crossly
Гость
« Ответ #1 : Май 18, 2010, 14:20 »

я думал setHorizontalScrollBarPolicy применяется к вьюхе а не к хидеру.... ??
Записан
djassan
Гость
« Ответ #2 : Май 18, 2010, 14:28 »

Забыл упомянуть, мой header отдельный элемент, он не в составе QTableView или  QTableWidget.
Собственно основная моя задача в создании элемента состоящего из наследников QTableWidget и QHeaderView.

Поясню почему header отдельно, мне надо что бы можно было изменять ширину секций хедера,
не меняя ширину столбцов таблицы, то есть секция хедера может быть с шириной равной 1,2,3,4,5...ширине столбца таблицы.
А в QTableWidget я не смог сделать так, что бы при изменении пользователем ширины секции хедера,
 не происходило изменение ширину столбца таблицы, поэтому разделил элементы, а теперь мне нужно сделать синхонный горизонтальный скрол соделжимого таблицы и секций хедера
Записан
crossly
Гость
« Ответ #3 : Май 18, 2010, 14:42 »

вам не кажется что если размеры секции хидера и размеры столбцов будут отличатся то и размер скрола будет разный??... или я чего то не понимаю... ??
Записан
djassan
Гость
« Ответ #4 : Май 18, 2010, 15:52 »

Так секций в хедере может быть 20, а столбцов в таблице 80. Каждая секция хедера имеет размер кратный размерам столбцов. Сумма длин секций хедера равна суммам широт столбцов.
То есть пользователь, допустим делает n-ую секцию хедера шириной в три столбца, и мы можем дальше работать с этими столбцами.
Элементы управления хедер и таблица связаны логически. Но физически это отдельные элементы, которые мне надо синхронизировать по скролу, чтоб при скроллинге не сползало.
Записан
djassan
Гость
« Ответ #5 : Май 19, 2010, 12:56 »

Прошу прощения за сумбур!
Постараюсь сформулировать четче:
У QHeaderView как и у QTableWidget, есть своя ScrollArea.
Так вот у QTableWidget достаточно прописать свойство setHorizontalScrollBarPolicy( Qt::ScrollBarAsNeeded );, хотя оно и по умолчанию так,
и бегунок скрола видно и скролится все нормально.

У QHeaderView при прописывании setHorizontalScrollBarPolicy( Qt::ScrollBarAsNeeded );, бегунок видно, но сам хэдер на его движения не реагирует,
не скролится. В чем может быть дело?

Как и говорил ранее QHeaderView на форме отдельный виджет и не входит ни в состав QTableWidget, ни в состав QTableView.
Пробовал создать QScrollArea и поместить в него QHeaderView , скролинг работает нормально, а вот собственная scrollArea хэдера ни в какую.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.115 секунд. Запросов: 20.