我正在使用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().
}
感谢任何帮助。
由于
答案 0 :(得分:0)
这完全是我的错。我无法在标题中将指针设置为NULL。
而不是:
QRubberBand *rubberBand {rubberBand = NULL};
我刚刚做了:
QRubberBand *rubberBand;