帮我用qt写代码,实现在界面上用鼠标左键画矩形框,并且打印框的坐标
时间: 2024-01-21 19:18:21 浏览: 111
好的,我理解了你的要求,我会根据你的要求为您提供帮助。首先,您需要一个基于Qt的图形界面应用程序,以便您可以在其中添加功能。在您的程序中,您需要使用Qt提供的QPainter类来画矩形框。可以使用QPainter的drawRect函数来绘制矩形框,并且可以使用鼠标事件来获取绘制矩形框的坐标。下面是一个简单的示例代码:
```c++
#include <QtWidgets/QApplication>
#include <QtWidgets/QWidget>
#include <QMouseEvent>
#include <QPainter>
#include <QDebug>
class MyWidget : public QWidget
{
public:
MyWidget(QWidget *parent = 0) : QWidget(parent)
{
setFixedSize(300, 300);
setWindowTitle("Draw Rectangle");
}
protected:
virtual void mousePressEvent(QMouseEvent *event) override
{
if (event->button() == Qt::LeftButton)
{
m_rectStart = event->pos();
}
}
virtual void mouseReleaseEvent(QMouseEvent *event) override
{
if (event->button() == Qt::LeftButton)
{
m_rectEnd = event->pos();
update();
}
}
virtual void paintEvent(QPaintEvent *event) override
{
QWidget::paintEvent(event);
QPainter painter(this);
painter.fillRect(rect(), Qt::white);
QRectF rect = QRectF(m_rectStart, m_rectEnd);
painter.drawRect(rect);
qDebug() << "Rect: " << rect.x() << ", " << rect.y() << ", " << rect.width() << ", " << rect.height();
}
private:
QPoint m_rectStart;
QPoint m_rectEnd;
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MyWidget widget;
widget.show();
return app.exec();
}
```
在上面的代码中,我们创建了一个QWidget来实现我们的应用程序,并重载了QMouseEvent事件,以便我们可以在用户单击左键时获取矩形的起点位置。当用户释放鼠标按钮时,我们将获取到的坐标存储在矩形的末点位置。然后,我们重载了paintEvent事件,并使用QPainter类来在窗口中绘制矩形框并打印出它的坐标。
您可以将上面的代码复制到Qt Creator中并编译它,并运行来查看代码的运行结果。
阅读全文