2016-06-17 28 views
1

MouseAreaマウスイベントをC++に接続しようとしていますが、QQuickMouseAreaはプライベートなので、信号を取得できませんでした。このようQML:C++でMouseAreaのマウスイベントを取得します

QObject::connect(mouseAreaObj, SIGNAL(released(QMouseEvent*)), 
       handlerObj, SLOT(handleEvent(QMouseEvent*))); 

は、この問題を解決する方法はありますか?

できない場合、Qtが私たちにQQuickMouseAreaにアクセスすることを許可しないのはなぜですか?

答えて

1

代わりQQuickMouseArea信号を聞いて、あなたはそれがQObjectとして取得および設定することができますhandlerObjこのようなあなたのmouseAreaObjevent filterとして:mouseAreaObj->installEventFilter(handlerObj)

次に、handlerObjeventFilterを実装する必要があります。 は、たぶんこのような何か:

bool HandlerObject::eventFilter(QObject* obj, QEvent* event) 
{ 
    if (event->type() == QEvent::MouseButtonRelease) 
     return handleEvent(static_cast<QMouseEvent*>(event)); 
    else 
     return false; 
} 
0

私はQML mouseArea.clicked.connect(cppObject.onClicked)で接続を行い、その後、C++で単純に期待されるような特性を持っているQObject*を受け取っ:

void CppClass::onClicked(QObject *event) { 
    qDebug() << "clicked" << event->property("x").toInt(); 
} 
関連する問題