3

我正在开发一个棋盘游戏,并且正在尝试使 QWidgets(矩形)可选。所以我有一个 BoardView(继承自 QWidget),其中包含 BuildingViews、PlantationViews(都继承自 QWidget)。这一切都显示在窗口上,但它是不可点击的。我怎样才能使它可点击?

4

1 回答 1

2

您可以尝试在其中转发小部件 ID 的 QMouseEvent 实现,如下所示:

在您的小部件(例如 YourWidget.cpp)的实现中:

YourWidget::MouseReleaseEvent(QMouseEvent *event)
{
     emit clickedWithMouse(this);    // this is a signal, declared in YourWidget.h
}

在“主”游戏文件(例如 Game.cpp)中:

Game::onButtonClicked(YourWidget* widget)    // this is a public slot, you must connect all YourWidgets's clickedWithMouse signals to this slot (in Game object code, e.g. when initialising the board)
{
    lastWidget = widget; //save the widget "ID" (lastWidget is a member of class Game)
    someFunction(widget); //do something with the widget (if you wish)
}
于 2013-06-06T19:50:23.697 回答