[Qt-creator] Class View in navigation pane (merge request #2167)

Denis Mingulov denis at mingulov.com
Mon Jul 5 22:56:38 CEST 2010


Hi,

The most popular feature request for Qt Creator is 'Class View in
navigation pane' (
http://bugreports.qt.nokia.com/browse/QTCREATORBUG-28 ) now.

I created such plugin (with additional minor change in
src/libs/cplusplus/Icons.h / .cpp - added possibility to get an icon
id instead of QIcon - it is needed for work not in GUI thread and for
faster sorting) and I sent a merge request:
http://qt.gitorious.org/qt-creator/qt-creator/merge_requests/2167

Due to the summer (a lot of vacations) I do not think that the review
will start before the middle of August (or even later).

So I am just asking - if somebody wants to use/test/review this plugin
etc - you are welcome!
Any feedback is highly appreciated.

There was just a 'feature request', no any details about how it has to
be done etc, so just a basic functionality is implemented. What else
should be added?

Short description:

Based on QtCreator CPlusPlus library (CPlusPlus::Snapshot /
CPlusPlus::Document).

Features:
- Flat view (any class for the project is show from the root)
- Subprojects view (like usual Projects)
- Go to any particular symbol by activating this item.
- Support multiple locations (e.g. Namespaces)
- Quite fast, Document parsing is done in a separate thread.
- If 'Class View' navi widget will not be shown - there will no be any
additional operation at all.

Screenshots (~160 kb each):
http://farm5.static.flickr.com/4079/4764686951_14319f111b_o.png
http://farm5.static.flickr.com/4099/4764686953_e2d3b59a1a_o.png

Target - to be fast (and invisible to the end user) as much as
possible, and useful.
Also as a separate target - show that a lot of features might be added
to Qt Creator by independent contributors (so - a lot votes for the
feature, but nobody even tried to implement it. Initial working
version was made in just 6 hours, further - bug fixing and
optimization). If somebody in Nokia already working for a similar
plugin - it is ok, at least this implementation is already done.

How is it done:
Plugin - creates NaviWidgetFactory and Manager.
NaviWidgetFactory creates NaviWidget.
NaviWidget uses QTreeView with QStandardItem.
Manager creates Parser and moves it to a separate thread.
Parser works with documents, creates a ParserTreeItem trees (QHash
based - to speed up work).
NaviWidget uses QStandardItem and not a special 'ParserTreeItemModel'
- because ParserTreeItem anyway has to be converted to something (or
somehow changed) - it does not support getting child by number etc.

-- 
Best Regards,
Denis Mingulov



More information about the Qt-creator-old mailing list