LoginSignup
0
0

More than 1 year has passed since last update.

Qt Creator C++ mouse event

Last updated at Posted at 2022-01-24

mouse move event

qt creatorプロジェクトでmouseイベントを使ってみました

プロジェクトを作成し,生成されたwidgetを以下のように変更します.

mainwindow.cpp

#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include <QMouseEvent> // add
#include <QtCore/QDebug> // add

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

// add
void MainWindow::mouseMoveEvent(QMouseEvent *event)
{

        qDebug() << "test";

}

mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    void mouseMoveEvent(QMouseEvent *event); // add

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

結果:表示されたwidgetでクリックボタンを押しながらマウスを移動すると"test"とコンソールに表示されました

mouse click event

1

以下のようにするとクリックボタンを押したタイミングで"press"とコンソールに表示されます

mainwindow.cpp
#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include <QMouseEvent> // add
#include <QtCore/QDebug> // add

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

// add
void MainWindow::mousePressEvent(QMouseEvent *event)
{
        qDebug() << "press";
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    void mousePressEvent(QMouseEvent *event); // add

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

2.clickした時のカーソル位置取得

mousePressEvent関数を以下の様に変更するとクリック時のカーソル位置を取得できます.

void MainWindow::mousePressEvent(QMouseEvent *event)
{
        // get mouse pos:
        // 参考: https://www.qtcentre.org/threads/3073-How-to-get-mouse-s-position
        QPoint p = this->mapFromGlobal(QCursor::pos());
        qDebug() << "press:" << p;

}

Screenshot from 2022-01-24 15-58-43.png

3.uiに配置したlabel座標系でのマウスポジション取得

ui上にlabelを配置し以下のようにマウスコールバック関数を変更するとui上配置したlabel座標系でのマウス位置を取得できます

void MainWindow::mousePressEvent(QMouseEvent *event)
{
        // get mouse pos:
        // 参考: https://www.qtcentre.org/threads/3073-How-to-get-mouse-s-position
        QPoint p = ui->label->mapFromGlobal(QCursor::pos());
        qDebug() << "press:" << p;

}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0