QRubberBand不起作用

时间:2015-01-28 21:07:30

标签: qt

我正在使用QRubberBand在我的QWidget上绘制一个显示QImage的选择框。

我正在使用完全按照文档中显示的代码,但它不起作用。我没有错误,但确实很奇怪。当我按下我的左按钮并将其拖动到我用QImage绘制的QWidget上时,它只是让我界面上的一个按钮消失并根据我的左键单击重新出现,而不是显示一个选择框。我还应该补充说,消失的按钮不是QWidget的一部分,甚至不是创建QWidget的父QObject的一部分。

void Widget::mousePressEvent(QMouseEvent *event)
{
    origin = event->pos();
    if (!rubberBand)
        rubberBand = new QRubberBand(QRubberBand::Rectangle, this);
    rubberBand->setGeometry(QRect(origin, QSize()));
    rubberBand->show();
}

void Widget::mouseMoveEvent(QMouseEvent *event)
{
    rubberBand->setGeometry(QRect(origin, event->pos()).normalized());
}

void Widget::mouseReleaseEvent(QMouseEvent *event)
{
    rubberBand->hide();
    // determine selection, for example using QRect::intersects()
    // and QRect::contains().
}

感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:0)

这完全是我的错。我无法在标题中将指针设置为NULL。

而不是:

QRubberBand *rubberBand {rubberBand = NULL};

我刚刚做了:

QRubberBand *rubberBand;