Qt:捕获 mouseMoveEvent 不与 WebView html 页面元素交互
Qt : catched mouseMoseEvent dont interact with QWebView html page element
我赶上 QWebView
的 mouseMoveEvent
以重新启动屏幕保护程序的计时器。问题是现在 mouseMoveEvent
未分配给 HTML 元素,因此无法在页面上移动滑动条。
我使用连接将 mouseMoveEvent
绑定到重启插槽 :
QObject::connect(_view, SIGNAL(mouseMoveEvent(QMouseEvent*)), _mediaPlayer, SLOT(stop()));
网络视图 class :
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.
}
您似乎误解了事件处理程序和信号的用法。
mouseMoveEvent是QWidget的一个成员方法,不是一个信号所以你不能连接它。你可以在你的子类中覆盖它并发出你自己的信号。
并且如果 QWidget 的鼠标跟踪被关闭,则只有在鼠标移动时按下鼠标按钮时才会发生鼠标移动事件。也许您还需要调用 setMouseTracking。
我赶上 QWebView
的 mouseMoveEvent
以重新启动屏幕保护程序的计时器。问题是现在 mouseMoveEvent
未分配给 HTML 元素,因此无法在页面上移动滑动条。
我使用连接将 mouseMoveEvent
绑定到重启插槽 :
QObject::connect(_view, SIGNAL(mouseMoveEvent(QMouseEvent*)), _mediaPlayer, SLOT(stop()));
网络视图 class :
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.
}
您似乎误解了事件处理程序和信号的用法。
mouseMoveEvent是QWidget的一个成员方法,不是一个信号所以你不能连接它。你可以在你的子类中覆盖它并发出你自己的信号。
并且如果 QWidget 的鼠标跟踪被关闭,则只有在鼠标移动时按下鼠标按钮时才会发生鼠标移动事件。也许您还需要调用 setMouseTracking。