2017-07-22 19 views
0

私はQtとC++の新機能ですので、いくつかの問題があります。私はmouseMoveEventの位置を取得し、マウスの位置にある私のpixmapに楕円を描くウィジェットを作成しようとしています。Qt 5のpaintEventでmouseMoveEventを使用するには?

#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); 
} 

マウスの位置がコンソールに印刷されているが、画像には楕円:あなたは、コードを見ることができます下に。

お手伝いできますか?

ありがとう、

ガブリエル。 docによると

答えて

1

POS:のQPoint

このプロパティは、親 ウィジェット内のウィジェットの位置を保持しています。

ウィジェットがウィンドウの場合、その位置は、フレームを含む デスクトップのウィジェットの位置になります。

...

アクセス機能:

のQPoint POS()constはボイド

移動(int型のx、int型のY)

空隙移動(CONSTのQPoint &)

このデータを見るとわからないので、可能な解決策は、QMouseEventで取得した位置の値を格納し、関数update()でペイントを更新する変数を作成することです。さらに、初めてのウィジェットです

* .hの

private: 
    QPoint mPoint; 

* .cppファイル:私たちは、私は以下を示して位置は、機能によってQPointisNull()が割り当てられていることを確認しますので、何の楕円あってはなりません

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); 
    } 
} 
+0

こんにちは@eyllanesc。私はpyqtからqtに移行しようとしています。あなたのソリューションは私を再び助けました。どうもありがとうございました。 –

+0

私はあなたがQtのドキュメントを読むことをお勧めします、それは最高です。 – eyllanesc

+0

私はいくつかのC++チュートリアルを読んでいます。言語は私には新しいものですが、好きです。私は私のUIを構築し続ける前に、Qtのドキュメントを読んでいきます。ヒントをありがとう。 –

関連する問題