|
RE: QTreeView鼠标左键单击和双击的问题
继承QTreeview,重写以下几个方法:
protected:
void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
void mouseDoubleClickEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
下面是鼠标按下的的重写示例:
void MyTreeView::mousePressEvent(QMouseEvent *e)
{
if( e->button() == Qt:eftButton ) //是否左键按下
{
QModelIndex index = indexAt(e->pos()); //取出按下点的元素索引index
if( index.isValid() ) //判断index是否有效
{
//你的处理
QVariant data = index.data(Qt::UserRole+1);
}
//如果需要判断组合键,使用下面代码
if(QApplication::keyboardModifiers () == Qt::ControlModifier)
{
//当前CTRL是否按下,根据需要加此情况
}
else if(QApplication::keyboardModifiers() == Qt::ShiftModifier)
{
//当前SHIFT是否按下,根据需要加此情况
}
else
{
//只是左键按下,没有CTRL和SHIFT
//你的处理...
}
}
}
其他的双击、右击类似 |
|