उपयोग QGraphicsScene::setSceneRect()
तो जैसे:
scene->setSceneRect(-180, -90, 360, 180);
आप के बारे में ऊर्ध्वाधर अक्ष गलत तरीके से फ़्लिप किया जा रहा चिंतित हैं, तो आप कैसे इस समस्या से निपटने के लिए कुछ विकल्प हैं। एक तरीका यह है कि जब भी आप y समन्वय को शामिल करते हैं तो गणना करके -1 गुणा करें। एक और तरीका view->scale(1, -1)
का उपयोग करके QGraphicsView को लंबवत रूप से फ़्लिप करना है ताकि दृश्य सही तरीके से प्रदर्शित हो।
नीचे एक कामकाजी उदाहरण है जो बाद की तकनीक का उपयोग करता है। उदाहरण में, मैंने QGraphicsScene को उप-वर्गीकृत किया है ताकि आप दृश्य में क्लिक कर सकें, और कस्टम दृश्य qDebug()
का उपयोग कर क्लिक स्थिति प्रदर्शित करेगा। अभ्यास में, आपको वास्तव में QGraphicsScene subclass करने की आवश्यकता नहीं है।
#include <QtGui>
class CustomScene : public QGraphicsScene
{
protected:
void mousePressEvent(QGraphicsSceneMouseEvent *event)
{
qDebug() << event->scenePos();
}
};
class MainWindow : public QMainWindow
{
public:
MainWindow()
{
QGraphicsScene *scene = new CustomScene;
QGraphicsView *view = new QGraphicsView(this);
scene->setSceneRect(-180, -90, 360, 180);
view->setScene(scene);
view->scale(1, -1);
setCentralWidget(view);
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
उत्कृष्ट। सिर्फ एक सवाल: 360 क्यों? – QLands
@QLands 360 चौड़ाई है, सही समन्वय नहीं है। -180 से 180 तक जाने के लिए, चौड़ाई 360 है। – Anthony
हां, आमतौर पर वे बिंदु x, बिंदु y, आकार x और आकार y – Lefsler