In einem Projekt ähnlich the QCustomPlot financial demo möchte ich ein QCPItemRect nicht nur in den Diagrammbereich, sondern auch in den Bereich unter dem Diagramm zeichnen.QCustomPlot - zeige Artikel auf QCPAxisRect unter customPlot
Nachdem
QCPAxisRect * xRect = new QCPAxisRect(this->ui.customPlot)
...
this->ui.customPlot->plotLayout()->addElement(1, 0, xRect);
ich die QCPItemRect wie
QCPItemRect * xItem = new QCPItemRect(this->ui.customPlot);
xItem -> setPen (QPen (Qt::black));
xItem -> bottomRight ->setAxisRect(this->xRect);
xItem -> topLeft ->setAxisRect(this->xRect);
xItem -> bottomRight ->setCoords(x - 2.0, y - 2.0);
xItem -> topLeft ->setCoords(x + 2.0, y + 2.0);
this->ui.customPlot->addItem(xItem);
jedoch hinzufügen möchten, wird das Rechteck noch auf this->ui.customPlot
gezogen zu this->xRect
gegenüber. Warum?
Jede Hilfe ist sehr geschätzt, Daniel
UPDATE ein Teil der Antwort selbst gefunden, ist eine fehlende Codezeile
xItem -> setClipAxisRect(xRect)
Noch nur mit einigen QCPAxisRects funktioniert.
UPDATE 2 Immer noch nicht da. Im Folgenden ist der kleinste Code-Schnipsel, die das Verhalten reproduziert - sein genug, um es in ein leeres QCustomPlot Projekt einzufügen:
// create a rectAxis, put it below the main plot
QCPAxisRect * xRect = new QCPAxisRect(this->ui.customPlot);
this->ui.customPlot->plotLayout()->addElement(1, 0, xRect);
// create a rectItem and show it on the xRect
QCPItemRect * xRectItem = new QCPItemRect(this->ui.customPlot);
xRectItem->setVisible (true);
xRectItem->setPen (QPen(Qt::transparent));
xRectItem->setBrush (QBrush(Qt::lightGray));
xRectItem->topLeft ->setType(QCPItemPosition::ptPlotCoords);
xRectItem->topLeft ->setAxisRect(xRect);
xRectItem->topLeft ->setCoords(1, 4);
xRectItem->bottomRight ->setType(QCPItemPosition::ptPlotCoords);
xRectItem->bottomRight ->setAxisRect(xRect);
xRectItem->bottomRight ->setCoords(2, 1);
xRectItem->setClipAxisRect (xRect);
xRectItem->setClipToAxisRect (false); // XXX
this->ui.customPlot->replot();[/code]
Das Verhalten hängt davon ab, ob die „XXX“ Zeile kommentiert oder nicht
- Zeile auskommentiert - das Rechteck erscheint nicht auf alle.
- Zeile übrig - das Rechteck wird in das Haupt-Rechteck gezogen, wie z. B. here.
Jeder Hinweis sehr geschätzt wird, Daniel