Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "qxttreewidget.h"
00026 #include "qxttreewidget_p.h"
00027 #include "qxtitemdelegate.h"
00028 #include <QHeaderView>
00029
00030 QxtTreeWidgetPrivate::QxtTreeWidgetPrivate()
00031 {}
00032
00033 QxtItemDelegate* QxtTreeWidgetPrivate::delegate() const
00034 {
00035 QxtItemDelegate* del = qobject_cast<QxtItemDelegate*>(qxt_p().itemDelegate());
00036 Q_ASSERT(del);
00037 return del;
00038 }
00039
00040 void QxtTreeWidgetPrivate::informStartEditing(const QModelIndex& index)
00041 {
00042 QTreeWidgetItem* item = qxt_p().itemFromIndex(index);
00043 Q_ASSERT(item);
00044 emit qxt_p().itemEditingStarted(item);
00045 }
00046
00047 void QxtTreeWidgetPrivate::informFinishEditing(const QModelIndex& index)
00048 {
00049 QTreeWidgetItem* item = qxt_p().itemFromIndex(index);
00050 Q_ASSERT(item);
00051 emit qxt_p().itemEditingFinished(item);
00052 }
00053
00054 void QxtTreeWidgetPrivate::expandCollapse(QTreeWidgetItem* item)
00055 {
00056 if (item && !item->parent() && delegate()->decorationStyle() != Qxt::NoDecoration)
00057 qxt_p().setItemExpanded(item, !qxt_p().isItemExpanded(item));
00058 }
00059
00100 QxtTreeWidget::QxtTreeWidget(QWidget* parent) : QTreeWidget(parent)
00101 {
00102 QXT_INIT_PRIVATE(QxtTreeWidget);
00103 QxtItemDelegate* delegate = new QxtItemDelegate(this);
00104 connect(delegate, SIGNAL(editingStarted(const QModelIndex&)),
00105 &qxt_d(), SLOT(informStartEditing(const QModelIndex&)));
00106 connect(delegate, SIGNAL(editingFinished(const QModelIndex&)),
00107 &qxt_d(), SLOT(informFinishEditing(const QModelIndex&)));
00108 connect(this, SIGNAL(itemPressed(QTreeWidgetItem*, int)),
00109 &qxt_d(), SLOT(expandCollapse(QTreeWidgetItem*)));
00110 setItemDelegate(delegate);
00111 }
00112
00116 QxtTreeWidget::~QxtTreeWidget()
00117 {}
00118
00132 Qxt::DecorationStyle QxtTreeWidget::decorationStyle() const
00133 {
00134 return qxt_d().delegate()->decorationStyle();
00135 }
00136
00137 void QxtTreeWidget::setDecorationStyle(Qxt::DecorationStyle style)
00138 {
00139 if (qxt_d().delegate()->decorationStyle() != style)
00140 {
00141 qxt_d().delegate()->setDecorationStyle(style);
00142
00143 if (style != Qxt::NoDecoration)
00144 {
00145 setRootIsDecorated(false);
00146 header()->hide();
00147 }
00148 reset();
00149 }
00150 }
00151
00163 Qt::TextElideMode QxtTreeWidget::elideMode() const
00164 {
00165 return qxt_d().delegate()->elideMode();
00166 }
00167
00168 void QxtTreeWidget::setElideMode(Qt::TextElideMode mode)
00169 {
00170 if (qxt_d().delegate()->elideMode() != mode)
00171 {
00172 qxt_d().delegate()->setElideMode(mode);
00173 reset();
00174 }
00175 }