我捕获了自己的mouseMoveEvent
的QWebView
来重新启动屏幕保护程序的计时器。问题在于,现在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/