如何准确了解用户何时展开QTreeView项目?

Dra*_*rro 3 c++ qt qtreeview qt4.8

有没有办法确切知道用​​户何时开始扩展操作,让我们说点击QTreeView中的展开箭头?

对于双击的情况,我可以捕获双击事件.

我尝试void expand(const QModelIndex &index);从QTreeView 重新实现这个插槽但它似乎不起作用.

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

我使用的是QT 4.8.2

Dra*_*rro 10

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

我像这样从QTreeView重新实现了mousePressEvent

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
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我检查鼠标是否留在项目的文本标签上(意思是展开箭头)

这与双击事件相结合,给了我所需要的东西.

  • 谢谢,这可以节省我的工作时间. (2认同)