我捕获了自己的mouseMoveEventQWebView来重新启动屏幕保护程序的计时器。问题在于,现在mouseMoveEvent尚未分配给HTML元素,因此不可能在页面上移动滑动条。

我使用connect将mouseMoveEvent绑定(bind)到重新启动插槽:

QObject::connect(_view, SIGNAL(mouseMoveEvent(QMouseEvent*)), _mediaPlayer, SLOT(stop()));

WebView类:
class WebView : public QWebView
{
    Q_OBJECT
public:

    WebView(QString menu) : _menuDesc(menu) {};
    WebView(){};

    void            setMenuDesc(QString menu) {_menuDesc = menu;};
    QString         getMenuDesc() {return _menuDesc;};
    void            setCurrPage(QString page) {_currPage = page;};
    QString         getCurrPage() {return _currPage;};
    void            setCurrCategory(QString page) {_currPage = page;};
    QString         getCurrCategory() {return _currPage;};

    void            mouseMoveEvent(QMouseEvent *)
    {
        emit mouseMoved();
    };

signals :
    void mouseMoved();

private:

    QString             _menuDesc = 0;
    QString             _currPage;
    QString             _currCategory = 0;
};

是否有解决方案仍可以捕获信号并将其传递到HTML页面?

最佳答案

mouseMoveEvent不是信号,而是事件处理程序。您可以重新实现此事件处理程序,并在需要时使其发出可以连接的信号。

像这样:

MyWebView::mouseMoveEvent(QMouseEvent * e) {
   emit mouseMoved(); // this would be signal you could connect to.
}

关于c++ - Qt:捕获的mouseMoseEvent不与QWebView html页面元素交互,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34199578/

10-13 03:36