HierarchicalHeaderView
Qt Widgets
Description:

Hierarchical header view for QTableView.
Header data is described by QAbstractItemModel. Text in cells of header can be rotated.

Changelog:

6 years ago

Version 1.3.3
- Optimized painting of rotated text.
Version 1.3.2
- Fixed wrong painting of selected and highlighted sections.
Version 1.3.1
- Fix bug: vertical size is always same as horizontal size.
Version 1.3
- Fix bug with extra column on first show of table view.
- New example: proxy model. It allows using HierarchicalHeaderView without subclassing QAbstractItemModel.
Version 1.2
- Fix potential crash after setModel call.
- Force header size recalculation. This fix some bugs with header size after setModel call.
Version 1.1
- Vertical header support.
Version 1.0.
- Initial release.

10 months ago

skebanga

saving and restoring state doesn't work for this - they columns are always resized to fit their contents.

Any idea on how to fix this?

Report

1 year ago

ArmanPrestige

Thank you.

Спасибо. Выручил

Report

2 years ago

mklein8791

Hello,

Thanks for this great component !

I'm using it on Qt5.3.2
How to hide the root element of the header, or how to add multiple root element ?

Report

2 years ago

Sethien

Hello,

I'm not 100% sure that this is what you want, but you should be able to add extra items in the header.(I used the example 2 project, and modified it a bit, so it works with QT 5.3.2) The example 2 project only uses the horizontal header and i added 8 items.

Hope it helps you with what you want, and otherwise let me know, maybe i can help you.

Project files:
https://www.dropbox.com/s/xqkmf6oa5r6lj8l/hv_example%28modified%29%20use%20example%202.zip?dl=0

Picture of the result:
http://imgur.com/TD0RSWP

Report

2 years ago

mklein8791

Thank you very much, that's what I needed.

Well I found a workaround but it doesn't please me, so I will use your solution ;)

Report

2 years ago

Sethien

Hello,

i'm using this application on qt 5.3.1 and i'm wondering if it's possible to hide the subcolumns of the horizontal header, but still make it possible for the root horizontal header element to span over multiple columns.

For now I sort of got a solution, I change the height of an item depending on the name/text. So if it's a subitem i set the height to 0, but the header will use the same height as when it contains the sub header column as well. So when hiding the subcolumns i want the height of the header to change as well.

So is there a better way to hide the subcolumns but keep the root column header spanning and change the height of the horizontal header to the height it is when only root items are used.

Report

2 years ago

Sethien

Picture to make it more clear: http://imgur.com/t7TI0JP

With my solution the header is twice as big than needed.

Report

2 years ago

Sethien

Ok i don't know what happend but it seems that my browser kept posting the same message, sorry for the extra posts

Report

2 years ago

Sethien

Ok I fixed the height of the header items by reimplementing the: virtual QSize sizeHint() const;

And i enabled the sort icon by adding:
if (isSortIndicatorShown() && sortIndicatorSection() == logicalInd)
opt.sortIndicator = (sortIndicatorOrder() == Qt::AscendingOrder) ? QStyleOptionHeader::SortDown : QStyleOptionHeader::SortUp;

to the styleOptionForCell funtion.

But when clicking on the horizontal header item that spans 2 columns the sortIndicator will only show for the whole button when i click on the right part. When i click on the left part the sortIndicator is shown half. Does anyone have a solution to make this working on only half the column item or both on the whole item?

see the pictures for more information:
http://imgur.com/FWRSUx7,CLKGpao,oPTpjVk

Report

2 years ago

Sethien

Ok I fixed the height of the header items by reimplementing the: virtual QSize sizeHint() const;

And i enabled the sort icon by adding:
if (isSortIndicatorShown() && sortIndicatorSection() == logicalInd)
opt.sortIndicator = (sortIndicatorOrder() == Qt::AscendingOrder) ? QStyleOptionHeader::SortDown : QStyleOptionHeader::SortUp;

to the styleOptionForCell funtion.

But when clicking on the horizontal header item that spans 2 columns the sortIndicator will only show for the whole button when i click on the right part. When i click on the left part the sortIndicator is shown half. Does anyone have a solution to make this working on only half the column item or both on the whole item?

see the pictures for more information:
http://imgur.com/FWRSUx7,CLKGpao,oPTpjVk

Report

2 years ago

Sethien

Ok I fixed the height of the header items by reimplementing the: virtual QSize sizeHint() const;

And i enabled the sort icon by adding:
if (isSortIndicatorShown() && sortIndicatorSection() == logicalInd)
opt.sortIndicator = (sortIndicatorOrder() == Qt::AscendingOrder) ? QStyleOptionHeader::SortDown : QStyleOptionHeader::SortUp;

to the styleOptionForCell funtion.

But when clicking on the horizontal header item that spans 2 columns the sortIndicator will only show for the whole button when i click on the right part. When i click on the left part the sortIndicator is shown half. Does anyone have a solution to make this working on only half the column item or both on the whole item?

see the pictures for more information:
http://imgur.com/FWRSUx7,CLKGpao,oPTpjVk

Report

2 years ago

Sethien

Ok I fixed the height of the header items by reimplementing the: virtual QSize sizeHint() const;

And i enabled the sort icon by adding:
if (isSortIndicatorShown() && sortIndicatorSection() == logicalInd)
opt.sortIndicator = (sortIndicatorOrder() == Qt::AscendingOrder) ? QStyleOptionHeader::SortDown : QStyleOptionHeader::SortUp;

to the styleOptionForCell funtion.

But when clicking on the horizontal header item that spans 2 columns the sortIndicator will only show for the whole button when i click on the right part. When i click on the left part the sortIndicator is shown half. Does anyone have a solution to make this working on only half the column item or both on the whole item?

see the pictures for more information:
http://imgur.com/FWRSUx7,CLKGpao,oPTpjVk

Report

2 years ago

Sethien

Ok I fixed the height of the header items by reimplementing the: virtual QSize sizeHint() const;

And i enabled the sort icon by adding:
if (isSortIndicatorShown() && sortIndicatorSection() == logicalInd)
opt.sortIndicator = (sortIndicatorOrder() == Qt::AscendingOrder) ? QStyleOptionHeader::SortDown : QStyleOptionHeader::SortUp;

to the styleOptionForCell funtion.

But when clicking on the horizontal header item that spans 2 columns the sortIndicator will only show for the whole button when i click on the right part. When i click on the left part the sortIndicator is shown half. Does anyone have a solution to make this working on only half the column item or both on the whole item?

see the pictures for more information:
http://imgur.com/FWRSUx7,CLKGpao,oPTpjVk

Report

2 years ago

RaideR2009

This is miracle, man ) thank you

Report

3 years ago

chuong

A good app. I use it well, but it does't show sort indicator, or i have not find the right way?

Report

3 years ago

geracmos

First of all thank you for the great App!

I need to get a signal so that I could determine if a root cell or if a lower level cell has been clicked from the Headers and also get their QModelIndex. Something like QHeaderView::clicked(int) SIGNAL. Do you think that is possible? Any suggestions?

Report

3 years ago

DPB1956

Thanks for creating a great widget. This worked great using Qt 4 but on Qt 5.1 I’m getting many strange compile errors such as:

HierarchicalHeaderView.cpp:382: undefined reference to `_imp___ZN11QHeaderViewD2Ev'

for function header:

HierarchicalHeaderView::HierarchicalHeaderView(Qt::Orientation orientation, QWidget *parent) :QHeaderView(orientation, parent), _pd(new private_data())

for instance. There are strange strings ie. “_imp___ZN11” and “D2Ev” embedded in the errors.

Has the widget been tested on Qt5 and is there an update that might work?

Report

3 years ago

Barmaglodd

Sorry, I did not tested it on Qt5. Qt5 is not stable to me to use in production. I'll try to test the widget.

Report

3 years ago

Diederikza

I have used this widget in our project and it works nicely.

Only problem I have is when I call resizeColumnsToContents() on the TableView, and the first root title is longer than all the child cells, the table looks funny. http://dl.dropboxusercontent.com/u/22456079/share%20images/columnsMinWidth.png The root segment text (in the picture's case "Power port (W)") is only partially displayed.

I was expecting the root segment's content to also be taken in consideration when adjusting leaf width's columns.

Any tips for adding a "minimum root cell width" feature?

Report

3 years ago

Barmaglodd

Yes. It is a known bug. Feel free to fix it ;)

Report

4 years ago

fralik

Thanks for the great widget!

Is there a way one could resize sections from the code?

There is a resizeSection function in QTableView, but it has no effect on your widget.

Report

4 years ago

fralik

Sorry, it was my mistake. I should have resized the sections after I set a model.

Report

4 years ago

alexeypertcev

I successfully used this class in a term paper for my university. Thank You.
Screenshot: http://ksu-ivt-nagruzka.googlecode.com/files/teachers_list.JPG

Report

5 years ago

verdrehung

We successfully used this class in one of our projects. Thank you!
Some screenshot: http://pix.academ.org/img/2011/12/01/08ba410347cad15b8fdb8fcbb4bf4635.png

Report

5 years ago

galoag

Hi, great work!

I extended your headerview allowing header sections to be clicked (setClickable(true)) - this worked just fine. Now I updated my Qt libs to the new version (4.7.3) resulting in the sectionClicked signal not triggered anymore. Usual QHeaderViews work just fine. Any ideas?

Report

Supporters

Recent Donations

Be the first to donate
Filename Version Description Filetype Packagetype License Downloads Date Filesize Install
Score 68%
68.00 Likes
32 Dislikes

0 Supporters for HierarchicalHeaderView:

Recent Donations:

Be the first to donate
show all
Details
version
1.3.3
updated Feb 10 2011
added Apr 20 2009
downloads
page views 3525
support Barmaglodd
For The Product
HierarchicalHeaderView
5 - 10 - 25 - 50 - 100 - 200 - 500