2011-11-26 15 views
12

का उपयोग करके 2 डी ग्रिड प्रदर्शित करना मैं क्यूटी विकास के लिए नया हूं इसलिए मैं एक ऐसे उपयोगकर्ता इंटरफ़ेस के समाधान का शोध करने की कोशिश कर रहा हूं जिसे मुझे डिजाइन करने की आवश्यकता है। मेरा प्रोजेक्ट एक वैश्विक मानचित्र के चारों ओर चलने वाले ऑनलाइन गेम में खिलाड़ियों को अनुकरण करना है। मानचित्र का प्रतिनिधित्व करने के लिए मुझे एक मानचित्र के क्षेत्र का प्रतिनिधित्व करने वाले ग्रिड में प्रत्येक स्थान के साथ 2 डी ग्रिड प्रदर्शित करने की आवश्यकता है। मुझे फिर खेल में प्रत्येक खिलाड़ी का स्थान प्रदर्शित करने की आवश्यकता है। बैक-एंड पूरी तरह से काम कर रहा है, मानचित्र को 2 डी सरणी के रूप में लागू किया गया है। मैं सिर्फ ग्रिड को प्रदर्शित करने के लिए अटक गया हूँ।क्यूटी जीयूआई विकास - QGraphicsView

मैंने जो शोध किया है, वह मुझे विश्वास करने के लिए प्रेरित करता है कि ऐसा करने का सबसे अच्छा तरीका QGraphicsView है, लेकिन मुझे जो चाहिए उसे प्रासंगिक ट्यूटोरियल नहीं मिल रहा है। अगर किसी को भी इसे कार्यान्वित करने के बारे में कोई सुझाव है तो इसकी सराहना की जाएगी।

धन्यवाद, दान

+0

मैं व्यक्तिगत रूप से सीखा एसडी के साथ भेजे गए उदाहरणों से क्यूटी ग्राफिक्स के बारे में बहुत कुछ लालकृष्ण [40000 चिप्स] (http://doc.qt.nokia.com/stable/demos-chip.html) विशाल दृश्यों को प्रदर्शित करने के लिए कस्टम ग्राफिक्स दृश्य और ग्राफिक्स आइटम को लागू करने का एक अच्छा उदाहरण है। स्रोत कोड पढ़ना इतना आसान नहीं है, लेकिन मुझे उस विषय पर कोई सभ्य ट्यूटोरियल नहीं मिला। बीटीडब्ल्यू, कुछ [उदाहरण] (http://doc.qt.nokia.com/stable/examples-graphicsview.html) पूरी तरह से प्रलेखित हैं और यह शुरुआत में बहुत मदद करता है। –

उत्तर

10

एक 2 डी ग्रिड क्षैतिज और ऊर्ध्वाधर लाइनों का एक सेट से ज्यादा कुछ नहीं है। मान लें कि आपके पास 500x500 नक्शा है और आप एक ग्रिड बनाना चाहते हैं जहां दोनों दिशाओं में रेखाओं के बीच की दूरी 50 है। नमूना कोड जो आपको दिखाता है कि आप इसे कैसे प्राप्त कर सकते हैं।

// create a scene and add it your view 
QGraphicsScene* scene = new QGraphicsScene; 
ui->view->setScene(scene); 

// Add the vertical lines first, paint them red 
for (int x=0; x<=500; x+=50) 
    scene->addLine(x,0,x,500, QPen(Qt::red)); 

// Now add the horizontal lines, paint them green 
for (int y=0; y<=500; y+=50) 
    scene->addLine(0,y,500,y, QPen(Qt::green)); 

// Fit the view in the scene's bounding rect 
ui->view->fitInView(scene->itemsVBoundingRect()); 

आप इसी examples के साथ ही QGraphicsView और QGraphicsScene दस्तावेज़ देखने चाहिए। इसके अलावा आप ग्राफिक्स व्यू training videos या क्यूटी डेवलपर दिनों से कुछ ग्राफिक्स व्यू related videos देख सकते हैं।

3

ठीक है अगर आपके पास लगातार ग्रिड आकार है या यहां तक ​​कि सीमित संख्या में ग्रिड आकार भी हैं जो मुझे करना है तो गिंप या किसी अन्य प्रोग्राम में ग्रिड ब्लॉक खींचना है और फिर पृष्ठभूमि ब्रश के रूप में सेट करें (केवल नीचे खींचें और ब्लॉक के दाहिने तरफ) क्यूटी छवि को दोहराएगा और आपको एक पूर्ण ग्रिड देगा। मुझे लगता है कि यह प्रदर्शन के लिए भी अच्छा है।

यह ग्रिड छवि है जो मैंने अपने कार्यक्रमों में से एक में 10x10 पिक्सल का उपयोग किया है।

grid 10px

फिर follwing के रूप में QGraphicsScene setBackgroundBrush फोन:

scene->setBackgroundBrush(QBrush(QPixmap(":/grid/grid10.png"))); 
0

अधिक देशी तरीका यह है:

scene = self.getScene()     # Your scene. 

brush = QBrush() 
brush.setColor(QColor('#999')) 
brush.setStyle(Qt.CrossPattern)   # Grid pattern. 
scene.setBackgroundBrush(brush) 

borderColor = Qt.black 
fillColor = QColor('#DDD') 
rect = QRectF(0.0, 0.0, 1280, 720)   # Screen res or whatever. 

scene.addRect(rect,borderColor,fillColor) # Rectangle for color. 
scene.addRect(rect,borderColor,brush)  # Rectangle for grid. 

PyQt द्वारा क्षमा करें ...

+0

मुझे लगता है कि इस उत्तर में सी ++ में समाधान की तलाश करने वालों के लिए कुछ मूल्य हो सकता है, क्योंकि रूपांतरण संभवतः काफी आसान है। लेकिन सामान्य रूप से केवल उन उत्तरों को पोस्ट करें जो प्रश्न में निर्दिष्ट भाषा से मेल खाते हैं। धन्यवाद! –

संबंधित मुद्दे