使用C++和QT,只在MainWindow.cpp中增加代码,完成一个在ui文件中事先设置好的widget中点击鼠标返回坐标的功能
时间: 2024-02-01 18:15:39 浏览: 97
可以使用Qt中的事件过滤器来实现这个功能,以下是示例代码:
在MainWindow.cpp中的构造函数中添加以下代码:
```c++
ui->widget->installEventFilter(this);
```
这里的ui->widget是在ui文件中设置好的widget,我们需要给它安装事件过滤器,让它能够捕获鼠标事件。
然后在MainWindow.cpp中添加以下函数:
```c++
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
if (obj == ui->widget && event->type() == QEvent::MouseButtonPress) {
QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);
qDebug() << "x:" << mouseEvent->x() << "y:" << mouseEvent->y();
return true;
}
return false;
}
```
这个函数会捕获ui->widget中的鼠标事件,如果是鼠标按下事件,则获取鼠标的x和y坐标,并输出到控制台中。
最后,在MainWindow.h文件中添加以下声明:
```c++
protected:
bool eventFilter(QObject *obj, QEvent *event);
```
这里是为了让编译器知道我们已经定义了一个名为eventFilter的函数,并且它是一个事件过滤器。
这样就完成了在ui文件中设置好的widget中点击鼠标返回坐标的功能。
阅读全文