先执行QGraphicsItem鼠标松开事件然后调用主窗口函数 C++
时间: 2023-10-07 09:06:17 浏览: 119
可以通过重载 `QGraphicsItem` 的 `mouseReleaseEvent` 函数来实现鼠标松开事件的处理,然后在该函数中调用主窗口的函数。示例代码如下:
```cpp
#include <QGraphicsItem>
class MyItem : public QGraphicsItem
{
public:
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override
{
// 执行 QGrpahicsItem 鼠标松开事件的处理
QGraphicsItem::mouseReleaseEvent(event);
// 调用主窗口的函数
QMainWindow *mainWindow = qobject_cast<QMainWindow *>(scene()->parent());
if (mainWindow) {
mainWindow->myFunction();
}
}
// 实现 QGraphicsItem 的纯虚函数
QRectF boundingRect() const override
{
return QRectF();
}
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override
{
// 绘制图形
}
};
```
在主窗口中,需要定义 `myFunction` 函数来处理鼠标松开事件的响应。示例代码如下:
```cpp
class MyMainWindow : public QMainWindow
{
public:
void myFunction()
{
// 处理鼠标松开事件的响应
}
// ...
};
```
当然,如果你需要在 `MyItem` 中调用的函数不止一个,你也可以将这些函数作为 `MyMainWindow` 的成员函数,然后在 `MyItem` 中通过 `qobject_cast` 将场景的父对象转换为 `MyMainWindow`,再调用相应的函数即可。
阅读全文
相关推荐
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![7z](https://img-home.csdnimg.cn/images/20241231044736.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)