接受(); QPixmap pixmap2(“/home/gabriel/Qt_interfaces/OpenCVTests/Webcam_PyQt5/Images/Court_top_View.jpg”); QRect矩形(0,0,宽度()-1,高度()-1); 油漆工(本); painter.drawRect(矩形); painter.drawPixmap(5,5,宽度()-10,高度()-10,pixmap2); 画家抽屉(位置(),10,10); },c++,qt,qt5,qpainter,qmouseevent,C++,Qt,Qt5,Qpainter,Qmouseevent" /> 接受(); QPixmap pixmap2(“/home/gabriel/Qt_interfaces/OpenCVTests/Webcam_PyQt5/Images/Court_top_View.jpg”); QRect矩形(0,0,宽度()-1,高度()-1); 油漆工(本); painter.drawRect(矩形); painter.drawPixmap(5,5,宽度()-10,高度()-10,pixmap2); 画家抽屉(位置(),10,10); },c++,qt,qt5,qpainter,qmouseevent,C++,Qt,Qt5,Qpainter,Qmouseevent" />

如何在Qt 5上的paintEvent上使用mouseMoveEvent? 我是QT和C++的新手,所以我遇到了一些困难。我正在尝试创建一个小部件,它可以获得mouseMoveEvent的位置,并在我的pixmap鼠标位置上绘制一个椭圆。您可以在下面看到代码: #include "myimage.h" #include <QPainter> #include <QPen> #include <QColor> #include <QMouseEvent> #include <QDebug> Myimage::Myimage(QWidget *parent) : QWidget(parent) { setMouseTracking(true); // E.g. set in your constructor of your widget. } // Implement in your widget void Myimage::mouseMoveEvent(QMouseEvent *event) { qDebug() << event->pos(); } void Myimage::paintEvent(QPaintEvent * event) { event->accept(); QPixmap pixmap2("/home/gabriel/Qt_interfaces/OpenCVTests/Webcam_PyQt5/Images/Court_top_View.jpg"); QRect rectangle(0, 0, width()-1, height()-1); QPainter painter(this); painter.drawRect(rectangle); painter.drawPixmap(5, 5, width()-10, height()-10, pixmap2); painter.drawEllipse(pos(), 10 ,10 ); } #包括“myimage.h” #包括 #包括 #包括 #包括 #包括 Myimage::Myimage(QWidget*parent):QWidget(parent) { setMouseTracking(true);//例如,在小部件的构造函数中设置。 } //在小部件中实现 void Myimage::mouseMoveEvent(QMouseEvent*事件) { qDebug()位置(); } void Myimage::paintEvent(QPaintEvent*事件) { 事件->接受(); QPixmap pixmap2(“/home/gabriel/Qt_interfaces/OpenCVTests/Webcam_PyQt5/Images/Court_top_View.jpg”); QRect矩形(0,0,宽度()-1,高度()-1); 油漆工(本); painter.drawRect(矩形); painter.drawPixmap(5,5,宽度()-10,高度()-10,pixmap2); 画家抽屉(位置(),10,10); }

如何在Qt 5上的paintEvent上使用mouseMoveEvent? 我是QT和C++的新手,所以我遇到了一些困难。我正在尝试创建一个小部件,它可以获得mouseMoveEvent的位置,并在我的pixmap鼠标位置上绘制一个椭圆。您可以在下面看到代码: #include "myimage.h" #include <QPainter> #include <QPen> #include <QColor> #include <QMouseEvent> #include <QDebug> Myimage::Myimage(QWidget *parent) : QWidget(parent) { setMouseTracking(true); // E.g. set in your constructor of your widget. } // Implement in your widget void Myimage::mouseMoveEvent(QMouseEvent *event) { qDebug() << event->pos(); } void Myimage::paintEvent(QPaintEvent * event) { event->accept(); QPixmap pixmap2("/home/gabriel/Qt_interfaces/OpenCVTests/Webcam_PyQt5/Images/Court_top_View.jpg"); QRect rectangle(0, 0, width()-1, height()-1); QPainter painter(this); painter.drawRect(rectangle); painter.drawPixmap(5, 5, width()-10, height()-10, pixmap2); painter.drawEllipse(pos(), 10 ,10 ); } #包括“myimage.h” #包括 #包括 #包括 #包括 #包括 Myimage::Myimage(QWidget*parent):QWidget(parent) { setMouseTracking(true);//例如,在小部件的构造函数中设置。 } //在小部件中实现 void Myimage::mouseMoveEvent(QMouseEvent*事件) { qDebug()位置(); } void Myimage::paintEvent(QPaintEvent*事件) { 事件->接受(); QPixmap pixmap2(“/home/gabriel/Qt_interfaces/OpenCVTests/Webcam_PyQt5/Images/Court_top_View.jpg”); QRect矩形(0,0,宽度()-1,高度()-1); 油漆工(本); painter.drawRect(矩形); painter.drawPixmap(5,5,宽度()-10,高度()-10,pixmap2); 画家抽屉(位置(),10,10); },c++,qt,qt5,qpainter,qmouseevent,C++,Qt,Qt5,Qpainter,Qmouseevent,鼠标位置正在控制台上打印,但图像上没有椭圆 你能帮我吗 问候, 加布里埃尔。根据: pos:QPoint 此属性保存小部件在其父级中的位置 小部件 如果小部件是一个窗口,则位置是窗口上小部件的位置 桌面,包括它的框架 访问功能: QPoint pos()const void 移动(整数x,整数y) 无效移动(常数点&) 当我们看到这些数据时,我们不需要它,一个可能的解决方案是创建一个变量,存储通过QMouseEvent获得的位置值,并通过函数更新绘制,此外,第一次使用小部件时,应该没有椭圆,因

鼠标位置正在控制台上打印,但图像上没有椭圆

你能帮我吗

问候,

加布里埃尔。

根据:

pos:QPoint

此属性保存小部件在其父级中的位置 小部件

如果小部件是一个窗口,则位置是窗口上小部件的位置 桌面,包括它的框架

访问功能:

QPoint pos()const void

移动(整数x,整数y)

无效移动(常数点&)

当我们看到这些数据时,我们不需要它,一个可能的解决方案是创建一个变量,存储通过
QMouseEvent
获得的位置值,并通过函数更新绘制,此外,第一次使用小部件时,应该没有椭圆,因此我们检查是否已通过
QPoint
的函数
isNull()
指定了位置,如下所示:

*.h

private:
    QPoint mPoint;
*.cpp

Myimage::Myimage(QWidget *parent)
    : QWidget(parent)
{
    setMouseTracking(true);
}

void Myimage::mouseMoveEvent(QMouseEvent *event)
{
    mPoint = event->pos();
    update();
}

void Myimage::paintEvent(QPaintEvent *)
{
    QPixmap pixmap2("/home/gabriel/Qt_interfaces/OpenCVTests/Webcam_PyQt5/Images/Court_top_View.jpg");

    QRect rectangle(0, 0, width()-1, height()-1);

    QPainter painter(this);
    painter.drawRect(rectangle);
    painter.drawPixmap(5, 5, width()-10, height()-10, pixmap2);

    if(!mPoint.isNull()){

        painter.drawEllipse(mPoint, 10 ,10 );
    }
}
根据报告:

pos:QPoint

此属性保存小部件在其父级中的位置 小部件

如果小部件是一个窗口,则位置是窗口上小部件的位置 桌面,包括它的框架

访问功能:

QPoint pos()const void

移动(整数x,整数y)

无效移动(常数点&)

当我们看到这些数据时,我们不需要它,一个可能的解决方案是创建一个变量,存储通过
QMouseEvent
获得的位置值,并通过函数更新绘制,此外,第一次使用小部件时,应该没有椭圆,因此我们检查是否已通过
QPoint
的函数
isNull()
指定了位置,如下所示:

*.h

private:
    QPoint mPoint;
*.cpp

Myimage::Myimage(QWidget *parent)
    : QWidget(parent)
{
    setMouseTracking(true);
}

void Myimage::mouseMoveEvent(QMouseEvent *event)
{
    mPoint = event->pos();
    update();
}

void Myimage::paintEvent(QPaintEvent *)
{
    QPixmap pixmap2("/home/gabriel/Qt_interfaces/OpenCVTests/Webcam_PyQt5/Images/Court_top_View.jpg");

    QRect rectangle(0, 0, width()-1, height()-1);

    QPainter painter(this);
    painter.drawRect(rectangle);
    painter.drawPixmap(5, 5, width()-10, height()-10, pixmap2);

    if(!mPoint.isNull()){

        painter.drawEllipse(mPoint, 10 ,10 );
    }
}

你好@eyllanesc。我正在尝试从pyqt迁移到qt。你的解决方案再次帮助了我。非常感谢。我正在阅读一些C++教程,语言对我来说是新的,但我喜欢。在继续构建ui之前,我将阅读Qt的文档。谢谢你的提示。你好@eyllanesc。我正在尝试从pyqt迁移到qt。你的解决方案再次帮助了我。非常感谢。我正在阅读一些C++教程,语言对我来说是新的,但我喜欢。在继续构建ui之前,我将阅读Qt的文档。谢谢你的提示。