Qt QRubberBand在QTableView中选择

时间:2014-12-30 04:29:46

标签: qt selected

我正在尝试在QTableView中选择项目,但是当我按下并快速移动鼠标时。有些项目没有选择。 我正在使用QRubberBand并覆盖MouseMove,MousePress,MouseRealse事件:

鼠标按事件:

void tableviewTest::mousePressEvent(QMouseEvent *event)
{
    QTableView::mousePressEvent(event);
    mStartPoint = QPoint(event->pos().x(), event->pos().y());
    mRubberBand->setGeometry (mStartPoint.x (), mStartPoint.y (), 0, 0);
    mRubberBand->show ();
}

鼠标移动事件:

void tableviewTest::mouseMoveEvent(QMouseEvent *event)
{
    QPoint movePoint = QPoint(event->pos ().x(), event->pos ().y ());
    mRubberBand->setGeometry(QRect(mStartPoint,movePoint).normalized());
    QRect rect = mRubberBand->geometry ();
    if (!rect.intersects (QRect(x,y,0,0))) {
            selectRow (indexAt (event->pos ()).row ());
    }
    this->viewport ()->update ();
    mRubberBand->update ();
    QTableView::mouseMoveEvent(event);
}

鼠标发布活动:

void tableviewTest::mouseReleaseEvent(QMouseEvent *inEvent)
{
    mRubberBand->hide();
    QTableView::mouseReleaseEvent(inEvent);
}

我的问题:如何在按下鼠标并快速移动时选择项目?如果我编码错误,请帮我解决。 谢谢大家。

0 个答案:

没有答案