2012-05-23 165 views
1

什麼是最簡單的方式讓QWebView在鼠標滾輪事件上水平滾動而不是垂直滾動。我認爲以下的替代品,但也許有一些更簡單的方法:讓`QWebView`在鼠標滾輪上水平滾動

  1. 子QWebView並重新實現QWebView::wheelEvent()
  2. 負載顯示的網頁,其中不改造

回答

0

我高估了上一些javascript選項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); 
} 
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()在錯誤的幀點(例如主機)。