如何确切知道用户何时扩展QTreeView项目



是否有一种方法可以确切知道何时在用户开始时,请说单击qtreeview中的展开箭头?

对于他双击时,我可以捕获双击事件。

我尝试从qtreeview重新完成此插槽void expand(const QModelIndex &index);,但似乎不起作用。

qtreeview中有一个名为 void expanded(const QModelIndex &index);的信号,但似乎是在扩展发生后发送的。

我正在使用QT 4.8.2

这是我为获得所需功能所做的工作:

我从qtreeview

从qtreeview重新成熟
void MyTreeView::mousePressEvent(QMouseEvent *event)
{
    QModelIndex clickedIndex = indexAt(event->pos());
    if(clickedIndex.isValid())
    {
        QRect vrect = visualRect(clickedIndex);
        int itemIdentation = vrect.x() - visualRect(rootIndex()).x();
        if(event->pos().x() < itemIdentation)
        {
            if(!isExpanded(clickedIndex))
            {
             //do stuff
            }
        }
    }
}

我检查一下鼠标按下是否将项目的文本标签保留在项目的文本标签上(含义在展开箭头上)

这与双击事件结合在一起,为我提供了我所需的东西。

您可以通过实现更改事件的方法来尝试此事:

  void YourTreeView::changeEvent(QEvent *e)
  {
    QFrame::changeEvent(e);
    switch (e->type()) {
    case QEvent::QGraphicsSceneResizeEvent
        //do want you want to do
        break;
    default:
        break;
    }
  }

最新更新