Explorer style tree views on Vista

Posted by Jens Bache-Wiig on May 30, 2007 · 4 comments

vista delegate

Vista introduced a new optional “Explorer” style for some of its item views. While Qt 4.3.0 uses this style for its item view classes, the selection background of the the delegate itself still retains the appearance from XP since it is not currently decorated by the style. While we consider revising this for a future version of Qt, it is in fact already possible to get the themed selection backgrounds by using the following custom delegate as shown in our modified dirview example above. The image below shows the same application without row selection and a single column.

vistadelegate.h
vistadelegate.cpp

single column tree

A few notes about this delegate:
- It requires the Vista SDK and must be linked against gdi32.lib, but it should not have extra runtime dependencies.
- On platforms other than Windows Vista the standard item delegate decorations are used.
- It is primarily designed for tree views, but can be used with other views as well.
- Hover appearance is currently disabled when row selection is used since it would require some extra updates from the widget.

QShare(this)

No related posts.


4 comments

1 Chris B May 30, 2007 at 11:56 am
 

Both links go to vistadelegate.h.

2 Jens May 30, 2007 at 12:05 pm
 

Thanks. Corrected now.

3 AlKu May 30, 2007 at 1:57 pm
 

Wow, that’s awesome! Thank you.
I’d probably now start to dig the Doc to find a way to provide the Hover feature, so I better ask before I start to write 1000 lines for this – does it require alot of work (for me) to implement the hover feature? If so (or not), can you point me to the right direction?

4 AlKu May 31, 2007 at 11:48 am
 

Oh, never mind. I just noticed that tree views do get hover effects and that’s all I need for now :) Though your code should also maybe check if QWindowsVistaStyle is used so that it doesn’t interfere with custom styles or the other styles… just a thought :)

Comments on this entry are closed.

Previous post:

Next post: