私は写真を表示するためのライブラリを手に入れました.PictureGLWidgetと呼びましょう:
class PictureGLWidget: public QGLWidget {
そのため、PictureGLWidget は QGLWidget を拡張します。PictureGlWidget では、
void PictureGlWidget::mouseReleaseEvent(QMouseEvent* releaseEvent);
すでに実装されています。
私は独自のプロジェクトを開始しました。クラス MyMainWindow としましょう。ここでは、PictureGlWidget を Pointerobject として使用するだけです。
PictureGlWidget * myPictureGLWidget = new PictureGlWidget(...);
//..
layout->addWidget(myPictureGLWidget , 0, 1);
この時点で、すでに PictureGlWidget と対応する画像が MainwindowWidget に表示されています。その PictureGlWidget をクリックしてマウスを押したままにすると、小さな MainWindow よりもはるかに大きいので、(2D スクロールのように) 画像を移動できます。
さらに PictureGlWidget は関数を提供します
bool PictureGlWidget::getPictureLocation(double& xPos, double& yPos);
これは、写真の現在のクリッピングを解放した写真の中心位置を教えてくれます。私の画像は私の小さな MainWindowWidget よりもはるかに大きいため、PictureGLWidget よりもはるかに大きいことを思い出してください。写真のサイズが 4000x4000px (左上 0,0) であると想像してください。PictureGLWidget は、800x800px と表示するだけです。したがって、getPictureLocation() は、現在表示されている画像部分の中心座標を設定し、(400, 400) のような値を返します。これは、中央の左上隅のどこかにある可能性があります。
そのウィジェットをスクロールしてマウスを離した後、現在表示されているピクチャパーツ(その大きな画像のほんの一部)の中心位置を取得したいと思います。私はそれを上書きすることでそれを行うと思った
MyMainWindow::mouseReleaseEvent(QMouseEvent *event){ qDebug() << "Mouse released!"; }
方法ですが、まだどこにも接続していません。現在、それは私の mouseReleases に反応しておらず、そのテキストは表示されません。