Bir CAD uygulamasında kullanılacak özel bir tuval için alt sınıf QGraphicsView. Kontrol anahtarının klavye değiştiricilerini kontrol etmek için QGraphicsView :: wheelEvent öğesini yeniden etkinleştirdim ve kontrol tuşuna basılırsa, yakınlaştırmak için. Kullanıcı vardiya tuttuğunda ve tekerleği kullanırken yatay kaydırma yapmaya çalışıyorum.qgraphicsview yatay kaydırma her zaman dikey bir delta var
Yapmakta olduğum sorun, yatay kaydırma da her zaman 0,279 tarafından yukarı kaydırılmasıdır. Büyük bir sorun değil, ama çok sinir bozucu ve başka bir şeylerin yanlış olduğunu gösteriyor.
Yani, burada sorular şunlardır:
- bu yatay kaydırma uygulamak için doğru yolu var mı? Değilse, nedir?
- Bu deltayı 0.279 nasıl önleyebilirim?
Şimdiden teşekkürler. scrollHorizontal içinde qDebug() çizgisinden
void myView::zoom(int delta)
{
double factor = pow(1.2, delta/abs(delta));
this->scale(factor, factor);
}
void myView::scrollHorizontal(int level)
{
QPointF center = mapToScene(viewport()->rect().center());
qDebug() << "center: " << center.x() << ", " << center.y();
centerOn(QPointF(center.x() - level, center.y()));
}
void myView::wheelEvent(QWheelEvent *event)
{
//qDebug() << "delta: " << event->delta();
if (event->modifiers() & Qt::ControlModifier)
{
this->zoom(event->delta());
}
else if (event->modifiers() & Qt::ShiftModifier)
{
this->scrollHorizontal(event->delta());
}
else
QGraphicsView::wheelEvent(event);
}
örnek çıkışının altında Kodu ve örnek çıktı zaman olay sol kenarında:
center: 261.5 , 615.654
center: 261.5 , 615.375
center: 261.5 , 615.096
center: 261.5 , 614.817
center: 261.5 , 614.538
center: 261.5 , 614.259
center: 261.5 , 613.98
center: 261.5 , 613.701
center: 261.5 , 613.421
Bu garip. Sahnenin dikdörtgeni sınırlarına ulaştığınızda 'QGraphicsView' biraz 'doğal olmayan' kaydırma buluyorum, görünür rect sahne rect nerede olursa olsun aynı davranıştır? – cmannett85
Soruna neyin neden olduğunu bilmek ilginç olsa da, yaptığınız şey [UX] (http://ux.stackexchange.com) bakış açısından oldukça kötüydü. Birisi yatay kaydırma isterse, uyguladığı bir giriş cihazını kullanabilirler. Tüm yeni trackpad'lerde olduğu gibi, scroll paddles veya multitouch, vb. Ile fareler Tahminen, bir CAD kullanıcısı iyi bir giriş aygıtı sağlayabilir ve böyle bir çözüm sunmanıza gerek yoktur. –