123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- #include "DieItem.h"
- DieItem::DieItem(int row, int col, PICK_DIE_STATUS status, qreal size, QGraphicsItem* parent)
- : QGraphicsRectItem(parent), row(row), col(col), status(status) {
- setRect(0, 0, size, size); // 设置单元格大小
- setBrush(getColorByStatus(status));
- // 设置边框(Pen)
- setPen(QPen(QColor(0, 0, 0), 0.5)); // 黑色边框,宽度为0.5
- }
- void DieItem::setSelected(bool selected) {
- if (selected) {
- setPen(QPen(Qt::red, 1));
- setZValue(1);
- } else {
- setPen(QPen(Qt::black, 0.5)); // 未选中时恢复为黑色边框
- setZValue(0);
- }
- // qDebug() << "DieItem clicked: Row:" << row << "Col:" << col;
- }
- void DieItem::setLeftSelected(bool selected) {
- if (selected) {
- setPen(QPen(Qt::green, 1));
- setZValue(1);
- } else {
- setPen(QPen(Qt::black, 0.5)); // 未选中时恢复为黑色边框
- setZValue(0);
- }
- // qDebug() << "DieItem clicked: Row:" << row << "Col:" << col;
- }
- void DieItem::setRightSelected(bool selected) {
- if (selected) {
- setPen(QPen(QColor("#00F5FF"), 1));
- setZValue(1);
- } else {
- setPen(QPen(Qt::black, 0.5)); // 未选中时恢复为黑色边框
- setZValue(0);
- }
- // qDebug() << "DieItem clicked: Row:" << row << "Col:" << col;
- }
- // void DieItem::mousePressEvent(QGraphicsSceneMouseEvent *event) {
- // if (event->button() == Qt::LeftButton) {
- // // isSelected = !isSelected; // 切换选中状态
- // // setSelected(isSelected); // 更新边框颜色
- // // 获取当前图形项的包围矩形
- // QRectF itemRect = boundingRect();
- // QPointF center = itemRect.center(); // 矩形的中心点
- // // 计算新的矩形尺寸(长宽的 95%)
- // qreal newWidth = itemRect.width() * 0.95;
- // qreal newHeight = itemRect.height() * 0.95;
- // // 计算新的矩形的左上角位置,使其保持原中心位置
- // qreal newX = center.x() - newWidth / 2;
- // qreal newY = center.y() - newHeight / 2;
- // // 创建新的矩形,作为响应区域
- // QRectF validArea(newX, newY, newWidth, newHeight);
- // // 获取鼠标点击位置
- // QPointF clickPos = event->pos();
- // // 判断点击位置是否在新的矩形区域内
- // if (validArea.contains(clickPos)) {
- // // 如果点击在有效区域内,则切换选中状态
- // isSelected = !isSelected; // 切换选中状态
- // setSelected(isSelected); // 更新边框颜色
- // }
- // }
- // QGraphicsRectItem::mousePressEvent(event); // 调用基类的事件处理
- // }
- QColor DieItem::getColorByStatus(PICK_DIE_STATUS status) {
- switch (status) {
- case DIE_EXIST: return QColor(0, 102, 255); // 蓝色
- case NO_EXIST: return QColor(200, 200, 200); // 浅灰
- case PICK_ING: return QColor(255, 255, 0); // 黄色
- case SKIP_DIE: return QColor(128, 128, 128); // 深灰
- case EDGE_DIE: return QColor(255, 165, 0); // 橙色
- default: return QColor(0, 0, 0);
- }
- }
- int DieItem::getRow() const {
- return row;
- }
- int DieItem::getCol() const {
- return col;
- }
- // void DieItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) {
- // // 创建右键菜单
- // QMenu menu;
- // QAction *action1 = menu.addAction("菜单项 1");
- // QAction *action2 = menu.addAction("菜单项 2");
- // // 连接菜单项的信号和槽
- // connect(action1, &QAction::triggered, this, &DieItem::handleAction1);
- // connect(action2, &QAction::triggered, this, &DieItem::handleAction2);
- // // 显示菜单
- // menu.exec(event->screenPos());
- // }
- // void DieItem::handleAction1() {
- // // 处理菜单项 1 的逻辑
- // qDebug() << "菜单项 1 被点击";
- // }
- // void DieItem::handleAction2() {
- // // 处理菜单项 2 的逻辑
- // qDebug() << "菜单项 2 被点击";
- // }
|