首页 > 其他分享 >QT在界面两点画一条线并测算距离

QT在界面两点画一条线并测算距离

时间:2024-03-28 15:33:00浏览次数:22  
标签:界面 QT 子类 线段 QSynchShowImageScene QSynchShowImageView 一条线

记录一下在界面划线的过程

在QT插件界面有QProductSetShowWidget2::QProductSetShowWidget2(QWidget *parent)框

其中缺陷图片是由ui->def_view设置

def_view是一个自定义类 QSynchShowImageView继承自vml::QZoomGraphicsView再继承自QT官方的QGraphicsView

在类QSynchShowImageView中
paintEvent方法用来持续刷新界面

 重定义了对鼠标事件的响应

设置有一个常量表示现在对框的一个状态,分别是展示图片,移动图片,测量距离

在测量距离的时候,用下面两个表示线段的起点和终点,update()方法刷新paintevent

pStart = mapToScene(event->pos()).toPoint(); //起点

pEnd = mapToScene(event->pos()).toPoint();   //终点

在paintevent中判断是否是测量模式

调用在QSynchShowImageView类中定义的SetLineText和SetLine来画线段和展示距离

参数传给scene一个智能指针对象,

是一个定义在 QSynchShowImageView 的QSynchShowImageScene* scene_ = nullptr;

scene调用QSynchShowImageScene中的函数SetLineText和SetLine,进行对场景的划线和展示文本。

 QSynchShowImageScene是一个继承QT官方的QGraphicsScene类的类

官方的QGraphicsItem类有很多子类,用来设置图像或者文本等

通过在QSynchShowImageScene中加入这些子类,可以调用每一个子类的方法

最终调用QGraphicsItem的各个子类的方法完成

实现在界面设置线段和文本,线段的参数在pen里面设置,文本也有许多设置参数的函数。

标签:界面,QT,子类,线段,QSynchShowImageScene,QSynchShowImageView,一条线
From: https://blog.csdn.net/qq_66010052/article/details/137111284

相关文章

  • SAP:界面程序上的按钮、LABEL、Checkbox等说明在哪里定义
    环境:SAPECC6:1、界面程序上的按钮、LABEL、Checkbox等说明在哪里定义?在事务码T-CODE:SE80创建程序后(如:Z12_06),在工具菜单栏点击“其它对象...”按钮,选择”增强选项“,在对象选择窗口的,选择”程序”标签页的“文本元素”。在“文本符号”标签页里输入文本内容。字段说明:符......
  • QTable自适应行宽度
    #include<QFontMetrics>#include<QFont>voidTableWidget::setH(QStringListstrlist){   setHorizontalHeaderLabels(strlist);   intsizeAll=0;   QList<int>sizeList;   for(inti=0;i<strlist.size();i++)   {      QF......
  • 使用vue-cli图形界面自定义创建vue项目
    1.第一步2.第二步babel:是JavaScript的编译器,主要用于将ECMAScript2015+代码转换为向后兼容的JavaScript版本,以便在当前和旧版浏览器或环境中运行。(ECMAScript2015(也称为ES6)引入了许多新的语言特性和语法,但不是所有浏览器都完全支持这些新特性。)我的配置如下:3.第三......
  • Qt 操作sql server数据库
    Qt操作sqlserver数据库添加qtsql的库连接数据库QSqlDatabase_db=QSqlDatabase::addDatabase("QODBC");_db.setHostName();_db.setDatabaseName();_db.setUserName();_db.setPassword();_db.setPort();_db.open();增QSqlQueryquery;query.prepare("INSER......
  • centos7 mosquitto (MQTT)安装/配置/自启动
    **************************************************************windows:>>一、安装及配置mosquitto1.下载并安装mosquitto(官网下载地址https://mosquitto.org/download/)>安装完成后进入安装目录1).编辑mosquitto.conf文件.注意系统防火墙得允许tcp1883端口#设......
  • Qt消息机制和事件
    事件事件(event)是由系统或者Qt本身在不同的时刻发出的。当用户按下鼠标、敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件。一些事件在对用户操作做出响应时发出,如键盘事件等;另一些事件则是由系统自动发出,如计时器事件。在前面我们也曾经简单提到,Qt程序需要在......
  • Qt小知识4.QWindow和QWidget
    1引言QWindow和QWidget都是Qt框架中用于创建和管理窗口的类,但它们在设计上服务于不同的目的和场景。这两者的区别不仅体现在API设计上,还体现在它们在Qt框架中的角色和使用方式上。2典型区别2.1继承结构和依赖QWidget继承自QObject和QPaintDevice,是所有窗口部......
  • Qt实现TFTP Server和 TFTP Client(四)
    3.3ServerServer包括下面3个类:ServerSocketTFtpServerTFtpServerWidget3.3.1ServerSocketServerSocket从BaseUdp派生实现write接口.3.3.1.1ServerSocket定义classQUdpSocket;classServerSocket:publicBaseUdp{public:ServerSocket(QUdpSocket*socket......
  • Qt - 音视频播放2
    解码器下载链接:LAVfilters 音视频播放播放内存中的音乐QFileread("./music/Nevada.mp3");  if(!read.open(QIODevice::ReadOnly)) {    qDebug()<<"文件打开失败,请重试~"; }  //下面用的对象,必须动态申请,不然构造函数执行完毕,局部变量内存......
  • VS、Qt编译遇到的错误
    ---1、404  NOTFOUND  downloading'http://mitk.org/download/thirdparty/DCMQI.tar.gz'failed       camke中的ep路径没有配置好---2、C4996'strcpy':Thisfunctionorvariablemaybeunsafe.Considerusingstrcpy_sinstead.Todisabledepre......