Tôi tạo một tùy chỉnh QGraphicsItem
. Và ghi đè boundingRect()
và paint()
.qtransform trong QGraphicsScene :: itemAt()
QRectF myTile::boundingRect() const
{
return QRectF(xPos*10, yPos*10, 10, 10);
}
void myTile::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
QRectF rec = boundingRect();
int gvi = value * 255;
QColor gv(gvi, gvi, gvi, 255);
QBrush brush(gv);
painter->fillRect(rec, brush);
painter->drawRect(rec);
}
Sau đó, tôi sử dụng addItem()
để thêm mục vào cảnh. Bây giờ tôi muốn lấy nó từ hiện trường theo vị trí của nó. Tôi tìm thấy hàm itemAt
. Nhưng vấn đề là tôi không biết const QTransform
& deviceTransform
là gì. Tôi nên sử dụng cái gì cho QTransform
?
Vì tôi không triển khai bất kỳ biến đổi nào trong số QGraphicsItem
. Điều này làm tôi bối rối.
Mặc dù QGraphicsScene có thể có nhiều chế độ xem. Vì vậy, giá trị của 'deviceTransform' phụ thuộc vào ngữ cảnh. Ví dụ, trong trình xử lý sự kiện chuột, bạn sẽ phải tìm ra từ chế độ xem sự kiện đến từ đâu. Xem [bình luận này] (http://stackoverflow.com/questions/16919819/itemat-not-returning-custom-qgraphicsitem#comment24426364_16921083). –