Я ловлю mouseMoveEvent
из моего QWebView
для перезапуска таймера заставки. Проблема в том, что сейчас mouseMoveEvent
не распространяется на элементы HTML, поэтому невозможно, например, переместить ползунок на странице.
Я использую Connect для привязки mouseMoveEvent
в слот перезагрузки:
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.
}
Кажется, вы неправильно понимаете обработчик событий и сигнализируете об использовании.
mouseMoveEvent является методом-членом QWidget, не является сигналом, поэтому вы не можете подключиться к нему. Вы можете переопределить его в своем подклассе и создать собственный сигнал.
И если отслеживание мыши в QWidget отключено, события перемещения мыши происходят только при нажатии кнопки мыши во время перемещения мыши. Может быть, вам нужно позвонить setMouseTracking тоже.