要实现点击选中最后new的矩形框,你可以使用以下方法:
在自定义的矩形框类中,添加一个布尔型的成员变量
isSelected
表示是否被选中。在
mousePressEvent
事件处理函数中,遍历所有已创建的矩形框对象,并将它们的isSelected
设置为false
。然后将当前点击的矩形框对象的isSelected
设置为true
。在绘制矩形框时,根据矩形框对象的
isSelected
属性决定是否使用不同颜色或样式来表示选中状态。
下面是一个简单示例代码:
// 矩形框类
class MyRect : public QGraphicsRectItem {
public:
MyRect(const QRectF& rect) : QGraphicsRectItem(rect), isSelected(false) {}
void setSelected(bool selected) {
isSelected = selected;
}
protected:
void mousePressEvent(QGraphicsSceneMouseEvent* event) override {
// 单击时选中当前矩形框,并取消其他矩形框的选中状态
for (auto item : scene()->items()) {
if (MyRect* rect = dynamic_cast<MyRect*>(item)) {
rect->setSelected(false);
}
}
setSelected(true);
// 继续处理鼠标事件
QGraphicsRectItem::mousePressEvent(event);
}
private:
bool isSelected;
};
// 使用示例
int main() {
QApplication app(argc, argv);
QGraphicsScene scene;
// 创建两个矩形框对象
MyRect* rect1 = new MyRect(QRectF(50, 50, 100, 100));
scene.addItem(rect1);
MyRect* rect2 = new MyRect(QRectF(200, 200, 150, 150));
scene.addItem(rect2);
// 其他初始化代码...
return app.exec();
}
这样,当点击矩形框时,最后一个创建的矩形框会被选中,并且其他矩形框会取消选中状态。你可以根据需要自定义选中状态的显示效果。
内容由零声教学AI助手提供,问题来源于学员提问