Home | All Classes | Main Classes | Annotated | Grouped Classes | Functions |
The QIconView class provides an area with movable labelled icons. More...
#include <qiconview.h>
Inherits QScrollView.
A QIconView can display and manage a grid or other 2D layout of labelled icons. Each labelled icon is a QIconViewItem. Items (QIconViewItems) can be added or deleted at any time; items can be moved within the QIconView. Single or multiple items can be selected. Items can be renamed in-place. QIconView also supports drag and drop.
Each item contains a label string, a pixmap or picture (the icon itself) and optionally a sort key. The sort key is used for sorting the items and defaults to the label string. The label string can be displayed below or to the right of the icon (see ItemTextPos).
The simplest way to create a QIconView is to create a QIconView object and create some QIconViewItems with the QIconView as their parent, set the icon view's geometry and show it. For example:
QIconView *iv = new QIconView( this ); QDir dir( path, "*.xpm" ); for ( uint i = 0; i < dir.count(); i++ ) { (void) new QIconViewItem( iv, dir[i], QPixmap( path + dir[i] ) ); } iv->resize( 600, 400 ); iv->show();
The QIconViewItem call passes a pointer to the QIconView we wish to populate, along with the label text and a QPixmap.
When an item is inserted the QIconView allocates a position for it. Existing items are rearranged if autoArrange() is TRUE. The default arrangement is LeftToRight -- the QIconView fills up the left-most column from top to bottom, then moves one column right and fills that from top to bottom and so on. The arrangement can be modified with any of the following approaches:
The spacing between items is set with setSpacing(). Items can be laid out using a fixed grid using setGridX() and setGridY(); by default the QIconView calculates a grid dynamically. The position of items' label text is set with setItemTextPos(). The text's background can be set with setItemTextBackground(). The maximum width of an item and of its text are set with setMaxItemWidth() and setMaxItemTextLength(). The label text will be word-wrapped if it is too long; this is controlled by setWordWrapIconText(). If the label text is truncated, the user can still see the entire text in a tool tip if they hover the mouse over the item. This is controlled with setShowToolTips().
Items which are selectable may be selected depending on the SelectionMode; the default is Single. Because QIconView offers multiple selection it must display keyboard focus and selection state separately. Therefore there are functions to set the selection state of an item (setSelected()) and to select which item displays keyboard focus (setCurrentItem()). When multiple items may be selected the icon view provides a rubberband, too.
When in-place renaming is enabled (it is disabled by default), the user may change the item's label. They do this by selecting the item (single clicking it or navigating to it with the arrow keys), then single clicking it (or pressing F2), and entering their text. If no key has been set with QIconViewItem::setKey() the new text will also serve as the key. (See QIconViewItem::setRenameEnabled().)
You can control whether users can move items themselves with setItemsMovable().
Because the internal structure used to store the icon view items is linear, no iterator class is needed to iterate over all the items. Instead we iterate by getting the first item from the icon view and then each subsequent (QIconViewItem::nextItem()) from each item in turn:
for ( QIconViewItem *item = iv->firstItem(); item; item = item->nextItem() ) do_something( item );QIconView also provides currentItem(). You can search for an item using findItem() (searching by position or for label text) and with findFirstVisibleItem() and findLastVisibleItem(). The number of items is returned by count(). An item can be removed from an icon view using takeItem(); to delete an item use delete. All the items can be deleted with clear().
The QIconView emits a wide range of useful signals, including selectionChanged(), currentChanged(), clicked(), moved() and itemRenamed().
QIconView supports the drag and drop of items within the QIconView itself. It also supports the drag and drop of items out of or into the QIconView and drag and drop onto items themselves. The drag and drop of items outside the QIconView can be achieved in a simple way with basic functionality, or in a more sophisticated way which provides more power and control.
The simple approach to dragging items out of the icon view is to subclass QIconView and reimplement QIconView::dragObject().
QDragObject *MyIconView::dragObject() { return new QTextDrag( currentItem()->text(), this ); }
In this example we create a QTextDrag object, (derived from QDragObject), containing the item's label and return it as the drag object. We could just as easily have created a QImageDrag from the item's pixmap and returned that instead.
QIconViews and their QIconViewItems can also be the targets of drag and drops. To make the QIconView itself able to accept drops connect to the dropped() signal. When a drop occurs this signal will be emitted with a QDragEvent and a QValueList of QIconDragItems. To make a QIconViewItem into a drop target subclass QIconViewItem and reimplement QIconViewItem::acceptDrop() and QIconViewItem::dropped().
bool MyIconViewItem::acceptDrop( const QMimeSource *mime ) const { if ( mime->provides( "text/plain" ) ) return TRUE; return FALSE; } void MyIconViewItem::dropped( QDropEvent *evt, const QValueList<QIconDragItem>& ) { QString label; if ( QTextDrag::decode( evt, label ) ) setText( label ); }
See iconview/simple_dd/main.h and iconview/simple_dd/main.cpp for a simple drag and drop example which demonstrates drag and drop between a QIconView and a QListBox.
If you want to use extended drag-and-drop or have drag shapes drawn you must take a more sophisticated approach.
The first part is starting drags -- you should use a QIconDrag (or a class derived from it) for the drag object. In dragObject() create the drag object, populate it with QIconDragItems and return it. Normally such a drag should offer each selected item's data. So in dragObject() you should iterate over all the items, and create a QIconDragItem for each selected item, and append these items with QIconDrag::append() to the QIconDrag object. You can use QIconDragItem::setData() to set the data of each item that should be dragged. If you want to offer the data in additional mime-types, it's best to use a class derived from QIconDrag, which implements additional encoding and decoding functions.
When a drag enters the icon view, there is little to do. Simply connect to the dropped() signal and reimplement QIconViewItem::acceptDrop() and QIconViewItem::dropped(). If you've used a QIconDrag (or a subclass of it) the second argument to the dropped signal contains a QValueList of QIconDragItems -- you can access their data by calling QIconDragItem::data() on each one.
For an example implementation of complex drag-and-drop look at the fileiconview example (qt/examples/fileiconview).
See also QIconViewItem::setDragEnabled(), QIconViewItem::setDropEnabled(), QIconViewItem::acceptDrop(), QIconViewItem::dropped(), and Advanced Widgets.
This enum type determines in which direction the items flow when the view runs out of space.
This enum type specifies the position of the item text in relation to the icon.
This enum type is used to tell QIconView how it should treat the positions of its icons when the widget is resized. The modes are:
This enumerated type is used by QIconView to indicate how it reacts to selection by the user. It has four values:
To summarise: Single is a real single-selection icon view; Multi a real multi-selection icon view; Extended is an icon view in which users can select multiple items but usually want to select either just one or a range of contiguous items; and NoSelection mode is for an icon view where the user can look but not touch.
If update is TRUE (the default) the viewport is repainted.
Example: fileiconview/qfileiconview.h.
Arranges all the items in the grid given by gridX() and gridY().
Even if sorting() is enabled, the items are not sorted by this function. If you want to sort or rearrange the items, use iconview->sort(iconview->sortDirection()).
If update is TRUE (the default), the viewport is repainted as well.
See also QIconView::gridX, QIconView::gridY, and QIconView::sort().
Returns the arrangement mode of the icon view. See the "arrangement" property for details.
Returns TRUE if the icon view rearranges its items when a new item is inserted; otherwise returns FALSE. See the "autoArrange" property for details.
This signal is emitted when the user clicks any mouse button. If item is non-null, the cursor is on item. If item is null, the mouse cursor isn't on any item.
See also mouseButtonClicked(), rightButtonClicked(), and pressed().
This signal is emitted when the user clicks any mouse button on an icon view item. item is a pointer to the item that has been clicked.
pos is the position of the mouse cursor in the global coordinate system (QMouseEvent::globalPos()). (If the click's press and release differ by a pixel or two, pos is the position at release time.)
See also mouseButtonClicked(), rightButtonClicked(), and pressed().
This signal is emitted when the user invokes a context menu with the right mouse button or with special system keys, with item being the item under the mouse cursor or the current item, respectively.
pos is the position for the context menu in the global coordinate system.
Returns the number of items in the icon view. See the "count" property for details.
This signal is emitted when a new item becomes current. item is the new current item (or 0 if no item is now current).
See also currentItem().
See also setCurrentItem(), firstItem(), and lastItem().
This signal is emitted when the user double-clicks on item.
See also QIconDrag.
Examples: fileiconview/qfileiconview.cpp and iconview/simple_dd/main.cpp.
The default implementation fills r with the viewport's backgroundBrush(). Subclasses may reimplement this to draw custom backgrounds.
See also contentsX, contentsY, and drawContents().
This signal is emitted when a drop event occurs in the viewport (but not on any icon) which the icon view itself can't handle.
e provides all the information about the drop. If the drag object of the drop was a QIconDrag, lst contains the list of the dropped items. You can get the data using QIconDragItem::data() on each item. If the lst is empty, i.e. the drag was not a QIconDrag, you have to decode the data in e and work with that.
Note QIconViewItems may be drop targets; if a drop event occurs on an item the item handles the drop.
Examples: iconview/main.cpp and iconview/simple_dd/main.cpp.
You should never need to call this function.
See also ensureVisible().
If you want to find all items that touch r, you will need to use this function and nextItem() in a loop ending at findLastVisibleItem() and test QIconViewItem::rect() for each of these items.
See also findLastVisibleItem() and QIconViewItem::rect().
Returns a pointer to the first item whose text begins with text, or 0 if no such item could be found. Use the compare flag to control the comparison behaviour. (See Qt::StringComparisonMode.)
See also findFirstVisibleItem().
See also lastItem() and currentItem().
Returns the horizontal grid of the icon view. See the "gridX" property for details.
Returns the vertical grid of the icon view. See the "gridY" property for details.
You should never need to call this function. Instead create QIconViewItem's and associate them with your icon view like this:
(void) new QIconViewItem( myIconview, "The text of the item", aPixmap );
This signal is emitted when item has been renamed to name, usually by in-place renaming.
See also QIconViewItem::setRenameEnabled() and QIconViewItem::rename().
This signal is emitted when item has been renamed, usually by in-place renaming.
See also QIconViewItem::setRenameEnabled() and QIconViewItem::rename().
Returns the brush to use when drawing the background of an item's text. See the "itemTextBackground" property for details.
Returns the position where the text of each item is drawn. See the "itemTextPos" property for details.
Returns TRUE if the user is allowed to move items around in the icon view; otherwise returns FALSE. See the "itemsMovable" property for details.
See also firstItem() and currentItem().
Warning: This function may be made private in a future version of Qt. We do not recommend calling it.
Returns the maximum length (in characters) that an item's text may have. See the "maxItemTextLength" property for details.
Returns the maximum width that an item may have. See the "maxItemWidth" property for details.
This signal is emitted when the user clicks mouse button button. If item is non-null, the cursor is on item. If item is null, the mouse cursor isn't on any item.
pos is the position of the mouse cursor in the global coordinate system (QMouseEvent::globalPos()). (If the click's press and release differ by a pixel or two, pos is the position at release time.)
See also mouseButtonPressed(), rightButtonClicked(), and clicked().
This signal is emitted when the user presses mouse button button. If item is non-null, the cursor is on item. If item is null, the mouse cursor isn't on any item.
pos is the position of the mouse cursor in the global coordinate system (QMouseEvent::globalPos()).
See also rightButtonClicked() and pressed().
This signal is emitted after successfully dropping one (or more) items of the icon view. If the items should be removed, it's best to do so in a slot connected to this signal.
Example: iconview/main.cpp.
This signal is emitted when the user moves the mouse cursor onto an item, similar to the QWidget::enterEvent() function.
This signal is emitted when the user moves the mouse cursor from an item to an empty part of the icon view.
See also onItem().
This signal is emitted when the user presses any mouse button. If item is non-null, the cursor is on item. If item is null, the mouse cursor isn't on any item.
See also mouseButtonPressed(), rightButtonPressed(), and clicked().
This signal is emitted when the user presses any mouse button. If item is non-null, the cursor is on item. If item is null, the mouse cursor isn't on any item.
pos is the position of the mouse cursor in the global coordinate system (QMouseEvent::globalPos()). (If the click's press and release differ by a pixel or two, pos is the position at release time.)
See also mouseButtonPressed(), rightButtonPressed(), and clicked().
Returns the resize mode of the icon view. See the "resizeMode" property for details.
This signal is emitted if the user presses the Return or Enter key. item is the currentItem() at the time of the keypress.
This signal is emitted when the user clicks the right mouse button. If item is non-null, the cursor is on item. If item is null, the mouse cursor isn't on any item.
pos is the position of the mouse cursor in the global coordinate system (QMouseEvent::globalPos()). (If the click's press and release differ by a pixel or two, pos is the position at release time.)
See also rightButtonPressed(), mouseButtonClicked(), and clicked().
This signal is emitted when the user presses the right mouse button. If item is non-null, the cursor is on item. If item is null, the mouse cursor isn't on any item.
pos is the position of the mouse cursor in the global coordinate system (QMouseEvent::globalPos()).
In Single and NoSelection modes, this function only changes the selection status of currentItem().
This signal is emitted when the selection has been changed. It's emitted in each selection mode.
This signal is emitted when the selection changes. item is the newly selected item. This signal is emitted only in single selection mode.
Returns the selection mode of the icon view. See the "selectionMode" property for details.
Sets the arrangement mode of the icon view to am. See the "arrangement" property for details.
Sets whether the icon view rearranges its items when a new item is inserted to b. See the "autoArrange" property for details.
Sets the horizontal grid of the icon view to rx. See the "gridX" property for details.
Sets the vertical grid of the icon view to ry. See the "gridY" property for details.
Sets the brush to use when drawing the background of an item's text to b. See the "itemTextBackground" property for details.
Sets the position where the text of each item is drawn to pos. See the "itemTextPos" property for details.
Sets whether the user is allowed to move items around in the icon view to b. See the "itemsMovable" property for details.
Sets the maximum length (in characters) that an item's text may have to w. See the "maxItemTextLength" property for details.
Sets the maximum width that an item may have to w. See the "maxItemWidth" property for details.
Sets the resize mode of the icon view to am. See the "resizeMode" property for details.
If s is FALSE, item is unselected.
If s is TRUE and QIconView::selectionMode() is Single, item is selected, and the item which was selected is unselected.
If s is TRUE and QIconView::selectionMode() is Extended, item is selected. If cb is TRUE, the selection state of the icon view's other items is left unchanged. If cb is FALSE (the default) all other items are unselected.
If s is TRUE and QIconView::selectionMode() is Multi item is selected.
Note that cb is used only if QIconView::selectionMode() is Extended. cb defaults to FALSE.
All items whose selection status is changed repaint themselves.
Sets the selection mode of the icon view to m. See the "selectionMode" property for details.
Sets whether the icon view will display a tool tip with the complete text for any truncated item text to b. See the "showToolTips" property for details.
Note that autoArrange() must be TRUE for sorting to take place.
If ascending is TRUE (the default), items are sorted in ascending order. If ascending is FALSE, items are sorted in descending order.
QIconViewItem::compare() is used to compare pairs of items. The sorting is based on the items' keys; these default to the items' text unless specifically set to something else.
See also QIconView::autoArrange, QIconView::autoArrange, sortDirection, sort(), and QIconViewItem::setKey().
Sets the space in pixels between icon view items to sp. See the "spacing" property for details.
Sets whether the item text will be word-wrapped if it is too long to b. See the "wordWrapIconText" property for details.
Returns TRUE if the icon view will display a tool tip with the complete text for any truncated item text; otherwise returns FALSE. See the "showToolTips" property for details.
The icon view is not redrawn immediately after inserting a new item but after a very small delay using a QTimer. This means that when many items are inserted in a loop the icon view is probably redrawn only once at the end of the loop. This makes the insertions both flicker-free and faster.
QIconViewItem::compare() is used to compare pairs of items. The sorting is based on the items' keys; these default to the items' text unless specifically set to something else.
Note that this function sets the sort order to ascending.
See also QIconViewItem::key(), QIconViewItem::setKey(), QIconViewItem::compare(), QIconView::setSorting(), and QIconView::sortDirection.
Returns TRUE if the sort direction for inserting new items is ascending;; otherwise returns FALSE. See the "sortDirection" property for details.
Returns TRUE if the icon view sorts on insertion; otherwise returns FALSE. See the "sorting" property for details.
Returns the space in pixels between icon view items. See the "spacing" property for details.
Returns TRUE if the item text will be word-wrapped if it is too long; otherwise returns FALSE. See the "wordWrapIconText" property for details.
This property holds the arrangement mode of the icon view.
This can be LeftToRight or TopToBottom. The default is LeftToRight.
Set this property's value with setArrangement() and get this property's value with arrangement().
This property holds whether the icon view rearranges its items when a new item is inserted.
The default is TRUE.
Note that if the icon view is not visible at the time of insertion, QIconView defers all position-related work until it is shown and then calls arrangeItemsInGrid().
Set this property's value with setAutoArrange() and get this property's value with autoArrange().
This property holds the number of items in the icon view.
Get this property's value with count().
This property holds the horizontal grid of the icon view.
If the value is -1, (the default), QIconView computes suitable column widths based on the icon view's contents.
Note that setting a grid width overrides setMaxItemWidth().
Set this property's value with setGridX() and get this property's value with gridX().
This property holds the vertical grid of the icon view.
If the value is -1, (the default), QIconView computes suitable column heights based on the icon view's contents.
Set this property's value with setGridY() and get this property's value with gridY().
This property holds the brush to use when drawing the background of an item's text.
By default this brush is set to NoBrush, meaning that only the normal icon view background is used.
Set this property's value with setItemTextBackground() and get this property's value with itemTextBackground().
This property holds the position where the text of each item is drawn.
Valid values are Bottom or Right. The default is Bottom.
Set this property's value with setItemTextPos() and get this property's value with itemTextPos().
This property holds whether the user is allowed to move items around in the icon view.
The default is TRUE.
Set this property's value with setItemsMovable() and get this property's value with itemsMovable().
This property holds the maximum length (in characters) that an item's text may have.
The default is 255 characters.
Set this property's value with setMaxItemTextLength() and get this property's value with maxItemTextLength().
This property holds the maximum width that an item may have.
The default is 100 pixels.
Note that if the gridX() value is set QIconView will ignore this property.
Set this property's value with setMaxItemWidth() and get this property's value with maxItemWidth().
This property holds the resize mode of the icon view.
This can be Fixed or Adjust. The default is Fixed. See ResizeMode.
Set this property's value with setResizeMode() and get this property's value with resizeMode().
This property holds the selection mode of the icon view.
This can be Single (the default), Extended, Multi or NoSelection.
Set this property's value with setSelectionMode() and get this property's value with selectionMode().
This property holds whether the icon view will display a tool tip with the complete text for any truncated item text.
The default is TRUE. Note that this has no effect if setWordWrapIconText() is TRUE, as it is by default.
Set this property's value with setShowToolTips() and get this property's value with showToolTips().
This property holds whether the sort direction for inserting new items is ascending;.
The default is TRUE (i.e. ascending). This sort direction is only meaningful if both sorting() and autoArrange() are TRUE.
To set the sort direction, use setSorting()
Get this property's value with sortDirection().
This property holds whether the icon view sorts on insertion.
The default is FALSE, i.e. no sorting on insertion.
To set the sorting, use setSorting().
Get this property's value with sorting().
This property holds the space in pixels between icon view items.
The default is 5 pixels.
Negative values for spacing are illegal.
Set this property's value with setSpacing() and get this property's value with spacing().
This property holds whether the item text will be word-wrapped if it is too long.
The default is TRUE.
If this property is FALSE, icon text that is too long is truncated, and an ellipsis (...) appended to indicate that truncation has occurred. The full text can still be seen by the user if they hover the mouse because the full text is shown in a tooltip; see setShowToolTips().
Set this property's value with setWordWrapIconText() and get this property's value with wordWrapIconText().
This file is part of the Qt toolkit. Copyright © 1995-2003 Trolltech. All Rights Reserved.
Copyright © 2003 Trolltech | Trademarks | Qt version 3.2.0b2
|