Ich habe ein Problem beim Malen eines Rechtecks in ein QLabel.
Ich habe eine Struktur von Widgets erzeugt:
Zuerst umfassend ein Widget, in diesem oben eine MenuBar, dann ein QSplitter, der das MainWidget in 2 Teile aufteilt.
Links ist ein ScrollView mit dem betreffenden QLabel als Inhalt.
Rechts ist eine QVBox mit Buttons etc.
Sieht dann in etwa so aus:
__________________________________________________
____________________Menu_________________________
ScrollView with label | another Box
|
|
--------------------------------------------------------------
Das Label hat ein gewisses Hintergrundbild und ich möchte nun dass wenn der Nutzer mit der Maus auf das Label klickt, an genau dieser Stelle ein Rechteck gemalt wird.
Bei mir sieht das folgendermaßen aus (Code etwas minimiert):
void Pic::mousePressEvent(QMouseEvent* event){
if(label->hasMouse()){
lastPoint=event->pos();
QPainter painter;
painter.begin(label);
painter.setPen(col);
painter.drawRect(lastPoint.x(), lastPoint.y(),10,10);
painter.end();
}
}
Das Problem ist nur, dass die Rects nicht an der MousePosition gemalt werden, sondern um eine gewisse Translation verschoben.
Sobald ich die ScrollBars schiebe verändert sich diese Translation auch noch.
Alles was ich will ist, dass genau an dem Punkt auf dem Label gemalt wird, den ich anklicke...
Weiss wer wie?
Ps: Ich weiss net ob es richtig ist, aber ich habe das Problem beim verschieben der ScrollBars in den Griff bekommen mit:
QPoint LastPoint2 = scrollBar->viewportToContents(lastPoint);
Und dann mit diesem Punkt malen.
(Also irgendwas mit dem Punkt gemacht... Keine Ahnung )
Vielen Dank für eure Zeit