HierarchicalHeaderView
Qt Widgets
Score 67%
Description:

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

8 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.

skebanga

1 year ago

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

ArmanPrestige

2 years ago

Thank you.

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

Report

mklein8791

2 years ago

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

Sethien

2 years ago

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

mklein8791

2 years ago

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

Sethien

3 years ago

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

Sethien

3 years ago

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

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

Report

Sethien

3 years ago

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

Report

Sethien

3 years ago

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

Sethien

3 years ago

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

Sethien

3 years ago

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

Sethien

3 years ago

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

Sethien

3 years ago

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

RaideR2009

3 years ago

This is miracle, man ) thank you

Report

chuong

3 years ago

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

Report

geracmos

4 years ago

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

DPB1956

4 years ago

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

C

Barmaglodd

4 years ago

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

Diederikza

4 years ago

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

C

Barmaglodd

4 years ago

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

Report

fralik

5 years ago

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

fralik

5 years ago

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

Report

alexeypertcev

5 years ago

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

verdrehung

5 years ago

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

galoag

6 years ago

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

8 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.

File (click to download) Version Description Filetype Packagetype License Downloads Date Filesize OCS-Install DL
Details
version
1.3.3
updated Feb 10 2011
added Apr 20 2009
downloads today
0
page views today 7