Hallo,
wie kann ich unterscheiden, ob gerade mein QGraphicsItem am Bildschirm ausgegeben wird, gedruckt wird oder nur im PrintPreview ist?
Zwischen Drucker/Bildschirm unterscheide ich momentan in dem ich den QWidget Paramenter von paint() == NULL prüfe. Kommt mir bissl billig vor diese Lösung.
Ausserdem würde ich auch gerne unterscheiden zwischen Drucken, und Druckervorschau. Und da hab ich noch garkeine Idee.
lg Michael
QGraphicsItem: Unterscheidung in paint() Drucker/Bildschirm?
Ich denke, QPrinter ist die falsche Stelle, das hat eigentlich gar nix mit deinem Drucken-oder-Zeichnen-Problem zu tun, deckt es doch das Zeichnen nicht ab.
Ich würde bei QGraphicsScene ansetzen - das ableiten. Irgendwann wird das sowieso fällig, wenn du spezielle Features beim Item-Handling einbauen willst. Du kannst dann auch gleich die API nach deinem Gusto erweitern:
In der paint() deines Items prüfst du nun, was this->scene()->paintStatus() gerade macht und zeichnest entsprechend.
Ich würde bei QGraphicsScene ansetzen - das ableiten. Irgendwann wird das sowieso fällig, wenn du spezielle Features beim Item-Handling einbauen willst. Du kannst dann auch gleich die API nach deinem Gusto erweitern:
Code: Alles auswählen
class MyScene : public QGraphicsScene {
enum PaintStatus {
Paint,
Print,
PrintPreview
};
PaintStatus paintStatus_;
public:
MyScene()
: paintStatus_(MyScene::Paint)
{}
void print(QPrinter& p) {
PaintStatus lastStatus = paintStatus_;
paintStatus_=MyScene::Print;
// hier auf Printer malen
paintStatus_ = lastStatus;
}
QPixmap printPreview() {
PaintStatus lastStatus = paintStatus_;
paintStatus_=MyScene::PrintPreview;
QPixmap previewPix;
// hier auf previewPix malen
paintStatus_ = lastStatus;
return previewPix;
}
PaintStatus paintStatus() const {
return paintStatus_;
}
};