class CQTreeView : public QTreeView
{
Q_OBJECT
public:
CQTreeView();
public:
void mousePressEvent(QMouseEvent *event);
void mark_subitem(QModelIndex index);
void unmark_subitem(QModelIndex index);
};
CQTreeView::CQTreeView()
{
}
void CQTreeView::mousePressEvent(QMouseEvent *event)
{
QModelIndex indexClicked = indexAt(event->pos());
if( indexClicked.isValid() )
{
QRect vrect = visualRect(indexClicked);
int itemIndentation = vrect.x() - visualRect(rootIndex()).x();
QRect rect = QRect(header()->sectionViewportPosition(0) + itemIndentation, vrect.y(),
style()->pixelMetric(QStyle::PM_IndicatorWidth), vrect.height());
if( rect.contains(event->pos()) )
{
QStandardItem *item = ((QStandardItemModel*)model())->itemFromIndex(indexClicked);
if( item->checkState()==Qt::Unchecked )
{
mark_subitem(indexClicked);
}
else
{
unmark_subitem(indexClicked);
}
QTreeView::mousePressEvent(event);
return;
}
else
{
QTreeView::mousePressEvent(event);
}
}
}
void CQTreeView::mark_subitem(QModelIndex index)
{
qDebug()<< "mark item, set checked";
//model()->rowCount(index);
}
void CQTreeView::unmark_subitem(QModelIndex index)
{
qDebug()<< "mark item, set uncheck";
}