खोज…


पैन, ज़ूम और QGraphicsView के साथ घुमाएँ

QGraphics का उपयोग दृश्य वस्तुओं के जटिल दृश्यों को एक ढांचे में व्यवस्थित करने के लिए किया जा सकता है जो उन्हें संभालना आसान बनाता है।

इस फ्रेमवर्क QGraphicsView , QGraphicsScene , और QGraphicsItems में तीन प्रमुख प्रकार की वस्तुओं का उपयोग किया गया है। QGraphicsItems मूल दृश्य आइटम हैं जो दृश्य में मौजूद हैं।

वहाँ कई प्रकार है कि कर रहे हैं पूर्व-निर्मित हैं और इस तरह के रूप में इस्तेमाल किया जा सकता है अनेक बिंदु , लाइन्स , पथ , पिक्समैप , बहुभुज , आयत , और पाठ

आप QGraphicsItem को विरासत में प्राप्त करके अपने स्वयं के आइटम भी बना सकते हैं। इन वस्तुओं को फिर QGraphicsScene में डाल दिया जाता है जो मूल रूप से वह दुनिया है जिसे आप देखने की योजना बना रहे हैं। आइटम उस दृश्य के भीतर स्थानांतरित हो सकते हैं जो उन्हें उस दुनिया में स्थानांतरित करने जैसा है जिसे आप देख रहे हैं। पोजीशनिंग और ओरिएंटेशन को ट्रांसफॉर्म मैट्रिसेस द्वारा नियंत्रित किया जाता है जिसे क्यूट्रांसफॉर्म कहा जाता है। Qt के पास अच्छे कार्य हैं, जिनमें आपको आमतौर पर सीधे QTransforms साथ काम करने की आवश्यकता नहीं होती है, इसके बजाय आप ऐसे कार्यों को घुमाते या पैमाने कहते हैं जो आपके लिए उचित परिवर्तन बनाते हैं। तब दृश्य को QGraphicsView (फिर से QTransforms साथ) के दृष्टिकोण से देखा जाता है, जो कि वह टुकड़ा है जिसे आप यूआई में विजेट में QTransforms

निम्नलिखित उदाहरण में केवल एक आइटम (एक पिक्समैप) के साथ एक बहुत ही सरल दृश्य है, जिसे एक दृश्य में डाला जाता है और एक दृश्य में प्रदर्शित किया जाता है। DragMode झंडे को चालू करके दृश्य को माउस के साथ चारों ओर से घुमाया जा सकता है और स्केल और रोटेट फ़ंक्शन का उपयोग करके इसे माउस पर स्क्रॉल के साथ अंदर और बाहर स्केल किया जा सकता है और तीर कुंजियों के साथ घुमाया जा सकता है।

यदि आप इस उदाहरण को चलाना चाहते हैं, तो दृश्य का एक उदाहरण बनाएँ, जो प्रदर्शित होगा और एक संसाधन फ़ाइल बनायेगा जिसमें उपसर्ग / चित्र होंगे जिसमें एक चित्र my_image.png होगा।

#include <QGraphicsView>
#include <QGraphicsScene>
#include <QGraphicsPixmapItem>
#include <QWheelEvent>
#include <QKeyEvent>

class View : public QGraphicsView
{
  Q_OBJECT
public:
  explicit View(QWidget *parent = 0) :
    QGraphicsView(parent)
  {
    setDragMode(QGraphicsView::ScrollHandDrag);

    QGraphicsPixmapItem *pixmapItem = new QGraphicsPixmapItem(QPixmap(":/images/my_image.png"));
    pixmapItem->setTransformationMode(Qt::SmoothTransformation);

    QGraphicsScene *scene = new QGraphicsScene();
    scene->addItem(pixmapItem);
    setScene(scene);
  }

protected Q_SLOTS:
  void wheelEvent(QWheelEvent *event)
  {
    if(event->delta() > 0)
      scale(1.25, 1.25);
    else
      scale(0.8, 0.8);
  }

  void keyPressEvent(QKeyEvent *event)
  {
    if(event->key() == Qt::Key_Left)
      rotate(1);
    else if(event->key() == Qt::Key_Right)
      rotate(-1);
  }
};


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow