Qt: catched mouseMoseEvent не взаимодействует с элементом HTML-страницы QWebView

Я ловлю 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-страницу?

2

Решение

mouseMoveEvent это не сигнал, а обработчик события. Вы можете переопределить этот обработчик событий и позволить ему генерировать сигнал, к которому вы можете подключиться, если вам это нужно.

Как это:

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

Другие решения

Кажется, вы неправильно понимаете обработчик событий и сигнализируете об использовании.

mouseMoveEvent является методом-членом QWidget, не является сигналом, поэтому вы не можете подключиться к нему. Вы можете переопределить его в своем подклассе и создать собственный сигнал.

И если отслеживание мыши в QWidget отключено, события перемещения мыши происходят только при нажатии кнопки мыши во время перемещения мыши. Может быть, вам нужно позвонить setMouseTracking тоже.

2

По вопросам рекламы [email protected]