2016-07-20 35 views
0

QGraphicsViewのズームスライダーを統合したいと思います。私はzoomigのためにQGraphicsView::scale()を使用します。ここでQt - QSliderでズームイン/アウト

が私のコードです:

void MainWindow::on_sld_zoom_valueChanged(int value) 
{ 
    ui->graphicsView->setTransformationAnchor(QGraphicsView::AnchorViewCenter); 
    double scaleFactor; 
    scaleFactor = pow(1.1,((value - 100)/100.0)); 
    ui->graphicsView->scale(scaleFactor,scaleFactor); 
} 

私の分のスライダ値は1で、最大は200であり、値が100のときscaleFactorをが1より大きい場合、私scaleFactorを私のfunction.Butによる1で、スライダー常にズームインします。たとえば、値を150から149に変更すると、ズームアウトする必要がありますが、ズームファクタが1より大きいため表示されません。

この問題はどうやって解決できますか?

答えて

1

ui->graphicsView->scale()はである。 以下は私のon_ZoomSliderValueChanged(int value)で、QGraphicsViewを現在のスライダの位置に合わせてスケーリングします。 は(おそらくご希望の曲線に従ってnewScaleを再計算することになるでしょう)、それはあなたを助けることを願っています:

void PictureWindow::on_ZoomSliderValueChanged(int value) 
{ 
    qreal newScale = qPow(m_pPimpl->m_ZoomFactor, value); 

    QMatrix matrix; 
    matrix.scale(newScale, newScale); 

    ui->graphicsView->setResizeAnchor(QGraphicsView::ViewportAnchor(m_pPimpl->m_ViewportAnchor)); 
    ui->graphicsView->setMatrix(matrix); 
} 
+0

それが働いS、ありがとうございました!! –

関連する問題