我有一个库来显示图片,我们称之为 PictureGLWidget,其中包含:
class PictureGLWidget: public QGLWidget {
所以 PictureGLWidget 扩展了 QGLWidget。在 PictureGlWidget 中
void PictureGlWidget::mouseReleaseEvent(QMouseEvent* releaseEvent);
已经实施。
我开始了一个自己的项目,比如说 MyMainWindow 类,我只使用 PictureGlWidget 作为指针对象:
PictureGlWidget * myPictureGLWidget = new PictureGlWidget(...);
//..
layout->addWidget(myPictureGLWidget , 0, 1);
此时,我已经可以在我的 MainwindowWidget 中看到 PictureGlWidget 和对应的图片了。当我单击那个 PictureGlWidget 时,按住鼠标,我可以移动图片(就像 2D 滚动一样),因为它比我的小 MainWindow 大得多。
进一步对 PictureGlWidget 提供了一个功能
bool PictureGlWidget::getPictureLocation(double& xPos, double& yPos);
它只是告诉我图片中心位置,我发布了图片的当前剪辑。请记住,我的图片比我的小 MainWindowWidget 大得多,因此比我的 PictureGLWidget 大得多。想象一下图片有 4000x4000px(左上角 0,0)。PictureGLWidget 仅用于显示 800x800 像素。所以 getPictureLocation() 设置当前显示图片部分的中心坐标,它会返回类似 (400, 400) 的东西,它可能位于左上角的中间位置。
我想抓住当前显示的图片部分(只是那张大图的一小部分)中心位置,在滚动那个小部件之后我释放了鼠标。我以为我可以通过覆盖
MyMainWindow::mouseReleaseEvent(QMouseEvent *event){ qDebug() << "Mouse released!"; }
方法,但还没有在任何地方连接它。目前它没有对我的 mouseReleases 做出反应,并且没有显示该文本。