4

私は OpenCV と Qt 5 を使用しています。私が行っている作業のために、マウス コールバックを名前付きウィンドウに渡す必要があります。ただし、クラスのプライベート メンバー変数を確認することはできません。

ここにいくつかのコードがあります:

class testWizard : public QWizard
{
  Q_OBJECT


  public:
   testWizard();
  ~testWizard();

   friend void mouseHandler(int, int, int, void*);



   private:

    cv::Mat preview;

    bool drag; 
    cv::Rect rect;   
};

フレンド機能:

void mouseHandler(int event, int x, int y, void* param)
{

 cv::Point p1, p2;

 if(event == CV_EVENT_LBUTTONDOWN && !drag)
 {
   p1 = cv::Point(x,y);
   drag = true;
 }

 if(event == CV_EVENT_LBUTTONDOWN && drag)
 {
   cv::Mat temp;
   preview.copyTo(temp);
 }

}

何が間違っているのかわかりません。これがこれを宣言する正しい方法だと確信しています。プレビューとドラッグは宣言されていない識別子であると言っています。残念ながら、プライベートメンバーにアクセスする必要があり、 this 引数が隠されているため、メンバー関数へのポインターを渡すことができないため、この方法で行う必要があります。

誰でも助けることができますか?ありがとうございました!

4

1 に答える 1