Ich habe den qcustypot verwendet, um einen Gegenstand zu zeichnen.qcustypot: setze einen Gegenstand nach Namen und finde ihn
Ich habe zwei Artikel. Einer ist Artikeltext, ein anderer Artikel ist rect.
Was ich tun möchte, ist, wenn ich den Text auswählen, ändern Sie den Artikel rect die Farbe.
Ich habe die itemAt
verwendet, um zu überprüfen, ob die Maus auf ein Element geklickt hat.
Aber ich habe zwei Probleme
Ich weiß nicht, was Itemtext habe ich mit.
Ich weiß nicht, wie man den spezifischen Artikel rect namentlich findet.
Code:
//item text
QCPItemText *text= new QCPItemText(ui->customPlot);
ui->customPlot->addItem(text);
text->setSelectable(true);
text->position->setCoords(10, 30);
text->setText("text");
text->setFont(QFont(font().family(), 9));
// item rect
QCPItemRect *rect= new QCPItemRect(ui->customPlot);
ui->customPlot->addItem(rect);
rect->setPen(QPen(QColor(50, 0, 0, 100)));
rect->setSelectedPen(QPen(QColor(0, 255, 0, 100)));
rect->setBrush(QBrush(QColor(50, 0, 0, 100)));
rect->setSelectedBrush(QBrush(QColor(0, 255, 0, 100)));
rect->topLeft->setCoords(0,10);
rect->bottomRight->setCoords(10,0);
connect(ui->customPlot, SIGNAL(mouseMove(QMouseEvent*)), this, SLOT(moveOver(QMouseEvent*)));
moveOver(QMouseEvent* event)
{
QPoint pos = event->pos();
QCPAbstractItem *item = ui->customPlot->itemAt(pos, true);
if(item != 0) qDebug() << "moved over";
}
Bitte fügen Sie den entsprechenden Teil des Codes. –