में एक QPainter डिवाइस कैसे प्राप्त करूं, मैं QT 4.5 के साथ एक पेंटिंग प्रोग्राम करने की कोशिश कर रहा हूं, इसलिए मैं कैनवास के लिए QGraphicsView का उपयोग कर रहा हूं, और QGraphicsScene तैयार वस्तुओं को संग्रहीत करने के लिए उपयोग कर रहा हूं। कुछ कारणों के लिए, मैं सिर्फ एक QPainter संदर्भ अपने ही व्युत्पन्न QGraphicsView में अगर मैं DrawingCanvas बदलने QWidget का एक बच्चा होने के लिए मिल सकता हैक्यूटी 4.5 - मैं QGraphicsView
class DrawingCanvas : public QGraphicsView
{
DrawingCanvas::DrawingCanvas(QWidget * parent);
...
};
DrawingCanvas::DrawingCanvas(QWidget * parent = 0) : QGraphicsView(parent)
{
....
}
void DrawingCanvas::paintEvent(QPaintEvent& paintEventInfo)
{
// Result in painter not active
QPainter(this);
...
}
हालांकि, यह काम करता है। यह देखते हुए कि QGraphicsView QAbstractScrollArea से लिया गया है, फिर QFrame, फिर QWidget, मैं उम्मीद करता हूं कि कोड काम करेगा।
तो मुझे लगता है कि सवाल कर रहे हैं:
1) क्यों है कि मैं एक सक्रिय QPainter पाने के लिए एक QGraphicsView में paintEvent उपयोग नहीं कर सकते है? 2) क्या कोई संभव है कि मैं एक प्राप्त कर सकूं?
अग्रिम धन्यवाद!
मैं बस इसी सटीक प्रक्रिया के माध्यम से चला गया>। <आपको लगता है कि वे अस्थायी वस्तुओं को ड्राइंग करना अधिक आसान बना देंगे। हालांकि एक और समाधान है ... overpainting। यदि आप वास्तव में चाहते थे तो आप उस पर एक अदृश्य विजेट ओवरले कर सकते हैं और उस पर पेंट कर सकते हैं। – mpen