在鼠标滚轮事件中让QWebView
水平滚动而不是垂直滚动的最简单方法是什么。我可以想到以下替代方案,但也许有一些更简单的方法:
QWebView::wheelEvent()
答案 0 :(得分:1)
另一种方法是发送方向为水平的假轮子事件。
void HScrollWebView::wheelEvent(QWheelEvent *ev)
{
QWheelEvent weHorizontal( ev->pos(), ev->delta(), ev->buttons(), ev->modifiers(),
Qt::Horizontal );
QWebView::wheelEvent( &weHorizontal );
}
此版本也适用于复杂的网页。例如。具有可滚动子部分的网页不会通过调用
滚动正确的区域page()->currentFrame()->scroll(ev->delta(), 0);
如果currentFrame()指向错误的帧(例如大型机)。
答案 1 :(得分:0)
在我的问题中,我高估了选项1的复杂性。我现在已经实现了它,就像这样(省略了构造函数):
class HScrollWebView : public QWebView
{
Q_OBJECT
public:
explicit HScrollWebView(QWidget *parent = 0);
protected:
virtual void wheelEvent(QWheelEvent *ev);
};
void HScrollWebView::wheelEvent(QWheelEvent *ev){
page()->currentFrame()->scroll(ev->delta(), 0);
}