Название: QHeaderView Child scroll problems Отправлено: 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 плохо, зачем, если у него своя есть встроенная. Название: Re: QHeaderView Child scroll problems Отправлено: crossly от Май 18, 2010, 14:20 я думал setHorizontalScrollBarPolicy применяется к вьюхе а не к хидеру.... ??
Название: Re: QHeaderView Child scroll problems Отправлено: djassan от Май 18, 2010, 14:28 Забыл упомянуть, мой header отдельный элемент, он не в составе QTableView или QTableWidget.
Собственно основная моя задача в создании элемента состоящего из наследников QTableWidget и QHeaderView. Поясню почему header отдельно, мне надо что бы можно было изменять ширину секций хедера, не меняя ширину столбцов таблицы, то есть секция хедера может быть с шириной равной 1,2,3,4,5...ширине столбца таблицы. А в QTableWidget я не смог сделать так, что бы при изменении пользователем ширины секции хедера, не происходило изменение ширину столбца таблицы, поэтому разделил элементы, а теперь мне нужно сделать синхонный горизонтальный скрол соделжимого таблицы и секций хедера Название: Re: QHeaderView Child scroll problems Отправлено: crossly от Май 18, 2010, 14:42 вам не кажется что если размеры секции хидера и размеры столбцов будут отличатся то и размер скрола будет разный??... или я чего то не понимаю... ??
Название: Re: QHeaderView Child scroll problems Отправлено: djassan от Май 18, 2010, 15:52 Так секций в хедере может быть 20, а столбцов в таблице 80. Каждая секция хедера имеет размер кратный размерам столбцов. Сумма длин секций хедера равна суммам широт столбцов.
То есть пользователь, допустим делает n-ую секцию хедера шириной в три столбца, и мы можем дальше работать с этими столбцами. Элементы управления хедер и таблица связаны логически. Но физически это отдельные элементы, которые мне надо синхронизировать по скролу, чтоб при скроллинге не сползало. Название: Re: QHeaderView Child scroll problems Отправлено: djassan от Май 19, 2010, 12:56 Прошу прощения за сумбур!
Постараюсь сформулировать четче: У QHeaderView как и у QTableWidget, есть своя ScrollArea. Так вот у QTableWidget достаточно прописать свойство setHorizontalScrollBarPolicy( Qt::ScrollBarAsNeeded );, хотя оно и по умолчанию так, и бегунок скрола видно и скролится все нормально. У QHeaderView при прописывании setHorizontalScrollBarPolicy( Qt::ScrollBarAsNeeded );, бегунок видно, но сам хэдер на его движения не реагирует, не скролится. В чем может быть дело? Как и говорил ранее QHeaderView на форме отдельный виджет и не входит ни в состав QTableWidget, ни в состав QTableView. Пробовал создать QScrollArea и поместить в него QHeaderView , скролинг работает нормально, а вот собственная scrollArea хэдера ни в какую. |