2014-02-10 5 views
2

Есть ли способ добавить разборные группы в QListWidget (как в представлении значка проводника Windows 7). Или мы можем изменить QTreeWidget, чтобы иметь подобное поведение?Поддерживает ли QListWidget группировку?

+2

Вы должны использовать QTreeView/QTreeWidget. Виджет списка - для списков объектов, без группировки. –

ответ

2

Наконец, я получил QTreeWidget и добавил QListWidgets как ItemWidgets.

class ExpandedList : public QListWidget 
{ 
    Q_OBJECT 
public: 
    ExpandedList(QWidget* pParent) : QListWidget(pParent) 
    { 
     setViewMode(IconMode); 
     setResizeMode(Adjust); 
     setMovement(Static); 

     for (int i = 0; rand() % 15; ++i) 
     { 
      addItem(new QListWidgetItem(QIcon(":/Images/AlertsIcon.ico"), "Text")); 
     } 
    } 

    virtual QSize sizeHint() const { return QSize(30, 30); } 
}; 

class IconTree : public QTreeWidget 
{ 
    Q_OBJECT 
public: 
    IconTree(QWidget* pParent) : QTreeWidget(pParent) 
    { 
     for (int i = 0; i < 10; ++i) 
     { 
      QTreeWidgetItem* pGroup = new QTreeWidgetItem; 
      pGroup->setText(0, "Group"); 
      addTopLevelItem(pGroup); 

      QTreeWidgetItem* pContent = new QTreeWidgetItem; 
      pGroup->addChild(pContent); 
      setItemWidget(pContent, 0, new ExpandedList(this)); 
     } 
    } 

    virtual void resizeEvent(QResizeEvent * pp) 
    { 
     QTreeWidget::resizeEvent(pp); 
     Arrange(); 
    } 

    void Arrange() 
    { 
     for (int i = 0; i < 10; ++i) 
     { 
      QTreeWidgetItem* pContent = (QTreeWidgetItem*)topLevelItem(i)->child(0); 
      ExpandedList* pList = (ExpandedList*)itemWidget(pContent, 0); 
      QRect r0 = pList->visualItemRect(pList->item(0)); 
      QRect r1 = pList->visualItemRect(pList->item(pList->count() - 1)); 
      pContent->setSizeHint(0, QSize(200, r1.bottom() - r0.top() + 20)); 
     } 

     updateGeometries(); 
    } 
}; 
+0

аналогичный пост [только для чтения, прокручиваемый, разборный, список значков] (http://stackoverflow.com/questions/3639468/what-qt-widgets-to-use-for-read-only-scrollable-collapsible-icon- список) – rmi