用qt c++代码实现一个标尺,能够测量两点间的距离
时间: 2023-08-01 17:03:07 浏览: 303
两点间距离C++
使用Qt C++代码实现一个标尺并测量两点之间的距离的步骤如下:
1. 创建一个新的Qt Widgets项目。
2. 在主窗口类的头文件中添加一个成员变量,用于绘制标尺。
```cpp
#include <QMainWindow>
#include <QPainter>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
protected:
void paintEvent(QPaintEvent *event) override;
private:
QPoint m_startPoint;
QPoint m_endPoint;
};
```
3. 在主窗口类的源文件中实现绘制标尺的功能。
```cpp
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
// 设置窗口大小和标题等
}
void MainWindow::paintEvent(QPaintEvent *event)
{
QMainWindow::paintEvent(event);
QPainter painter(this);
painter.setPen(Qt::black);
// 绘制标尺
painter.drawLine(m_startPoint, m_endPoint);
// 计算并绘制两点间的距离
qreal distance = QLineF(m_startPoint, m_endPoint).length();
painter.drawText(QRectF(m_startPoint, m_endPoint), Qt::AlignTop, QString::number(distance));
}
```
4. 在界面上捕捉鼠标点击事件,并更新起点和终点坐标。
```cpp
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
// 设置窗口大小和标题等
setMouseTracking(true);
}
void MainWindow::mousePressEvent(QMouseEvent *event)
{
m_startPoint = event->pos();
}
void MainWindow::mouseMoveEvent(QMouseEvent *event)
{
m_endPoint = event->pos();
update();
}
void MainWindow::mouseReleaseEvent(QMouseEvent *event)
{
m_endPoint = event->pos();
update();
}
```
5. 将创建的MainWindow类作为主函数的窗口并显示。
```cpp
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
```
这样,就实现了一个能够测量两点之间距离的标尺。当鼠标在窗口上移动时,标尺会随之更新,并显示两点之间的距离。
阅读全文