私は 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 引数が隠されているため、メンバー関数へのポインターを渡すことができないため、この方法で行う必要があります。
誰でも助けることができますか?ありがとうございました!