0

qtwebkit qwebview でクリックされた要素を検出できません。

理由はわかりませんが、属性を探しているときに、ドキュメント内のテキストをクリックしても何も返されません

void APP_Orders::contextMenuEvent(QContextMenuEvent *event)
{
        QWebHitTestResult hit = page()->mainFrame()->hitTestContent(event->pos());
        QWebElement hitElement = hit.element();
        QString ctx = hitElement.attribute("ctx","none");
        while(ctx == "none")
        {
            hitElement = hitElement.parent();
            ctx = hitElement.attribute("ctx","none");
        }


        qDebug() << ctx;
}

私のドキュメントでは、本文に ctx 属性があります。どこをクリックしても、デバッグで本文の ctx 属性が取得されます。これは予期される動作ですが、テキストをクリックすると、ドキュメントにないように見えます...無限ループに入った後にアプリがクラッシュします。xml コンテンツまたは親を見ても、祖父母 grangranparents xml コンテンツは常に空の文字列です...

理由は?

4

1 に答える 1

1

OK、同僚がこの回避策を見つけました。誰かがそれを必要とするならそれを共有してください...

void APP_Orders::contextMenuEvent(QContextMenuEvent *event)
{
        QWebHitTestResult hit = page()->mainFrame()->hitTestContent(event->pos());
        QWebElement hitElement = hit.element();
        QString ctx = hitElement.attribute("ctx","none");
        if(ctx == "")
        {
            hitElement = hit.enclosingBlockElement();
            ctx = hitElement.attribute("ctx","none");
        }
        while(ctx == "none")
        {
            hitElement = hitElement.parent();
            ctx = hitElement.attribute("ctx","none");
        }


        qDebug() << ctx;
}
于 2013-10-28T13:02:00.600 に答える