トップ 一覧 ソース 検索 ヘルプ RSS ログイン

Qt Assistantでホイールの効きがおかしいメモ

Qtは標準でホイールイベントに対応している。Qt Assistantも、当たり前のようにホイールイベントに対応している。

helpviewer.cpp
343|void HelpViewer::wheelEvent(QWheelEvent *e)
344|{
345|    if (e->modifiers() & Qt::ControlModifier) {
346|        const int delta = e->delta();
347|        if (delta > 0)
348|            zoomIn(delta / 120);
349|        else if (delta < 0)
350|            zoomOut(-delta / 120);
351|        e->accept();
352|        return;
353|    }
354|    QWebView::wheelEvent(e);
355|}

それなのに、どうしてホイールの効きがおかしいのか? それはつまり、親クラスであるQWebViewでホイールの処理がおかしいから。

そこそこまじめにQWebView内部の処理を追いかけたんだけど・・・ これ、修正は面倒だなぁ。というわけで手っ取り早い修正方法は『QWebViewを使わないこと』。これだな。

assistant.proをこんな感じで修正

assistant.pro
10|contains(QT_CONFIG, webkit) {
11|    QT += webkit
12|}
13|
14|QT -= webkit                # 追加
15|DEFINES += QT_NO_WEBKIT     # 追加
16|
17|CONFIG += qt warn_on help

あとはassistantをコンパイルしなおすだけ。webkitが使えない場合、QTextBrowserが代わりに使われるのでassistantとしての動作は問題ない。たぶん。

(´-`).。о〇(アドイン経由でvs2008に組み込まれたヘルプを見てれば、全く関係のない話だな・・・)


(2009/11/11 メモ,Qt