7

ウィジェットに QGraphicsView ウィンドウがあり、画像をズームするマウス ホイールのイベントを配置しました。

ただし、ズームインするとすぐにスクロールバーが表示され、マウスホイールのスクロール機能がズーム機能をオーバーライドします。

スクロールをすべて削除し、ドラッグして移動するオプションを追加する方法があるかどうか、またはズームするCTRLとマウスホイールとマウスホイールだけでスクロールを制御する方法があるかどうか疑問に思っていました

これが私のズーム機能です(これは完璧ではないことを認識しています)が、誰かがそれに光を当てることができれば、それはボーナスになります

事前に乾杯

void Test::wheelEvent(QWheelEvent *event)
{
    if(event->delta() > 0)
    {
        ui->graphicsView->scale(2,2);
    }
    else
    {
        ui->graphicsView->scale(0.5,0.5);
    }
}
4

3 に答える 3

6

次のコードでスクロールを無効にすることができます。

    ui->graphicsView->verticalScrollBar()->blockSignals(true);
    ui->graphicsView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    ui->graphicsView->horizontalScrollBar()->blockSignals(true);
    ui->graphicsView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
于 2014-08-19T20:21:02.867 に答える
1

あなたの質問にはもう少し簡単な答えがあると思います..スクロールバーを無効にするには、スクロールバーポリシーを設定するだけです(QGraphicsViewはQScrollViewです)ので、ステップ1)

setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);

それはスクロールバーを無効にします..

ステップ 2) (シンプルにしたい場合)

QGraphicsView * pView;  // pointer to your graphics view
pView->setInteractive(true);
pView->setDragMode(QGraphicsView::ScrollHandDrag);

それがあなたが望む結果を得るための最速の方法です

于 2013-04-19T16:45:12.267 に答える