в заголовках виджета публично
C++ (Qt) |
1
2
3
| public:
void mouseMoveEvent(QMouseEvent *e);
void leaveEvent(QEvent *e); |
|
сигналы
C++ (Qt) |
1
2
3
| signals:
void Mouse_In();
void Mouse_Out(); |
|
дальше определите им поведение в спп аля
C++ (Qt) |
1
2
| void pubu::mouseMoveEvent(QMouseEvent *e) {emit Mouse_In();}
void pubu::leaveEvent(QEvent *e){emit Mouse_Out();} |
|
включите виджету трекинг
C++ (Qt) |
1
| this->setMouseTracking(1); |
|
у принимающей стороны определите слоты, которые будут принимать сигналы
C++ (Qt) |
1
2
3
| private slots:
void Mouse_Detector_In();
void Mouse_Detector_Out(); |
|
и реализуйте действие в срр
вот как по движению мыши выставлять lcd:
mainwindow.h
C++ (Qt) |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| #ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void Mouse_Detector_In();
void Mouse_Detector_Out();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H |
|
mainwindow.cpp
C++ (Qt) |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| #include "mainwindow.h"
#include "ui_mainwindow.h"
#include "pubu.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->pushButton, SIGNAL(Mouse_In()), this, SLOT(Mouse_Detector_In()));
connect(ui->pushButton, SIGNAL(Mouse_Out()), this, SLOT(Mouse_Detector_Out()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::Mouse_Detector_In()
{
this->ui->lcdNumber->display(1);
}
void MainWindow::Mouse_Detector_Out()
{
this->ui->lcdNumber->display(0);
} |
|
pubu.h
C++ (Qt) |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| #ifndef PUBU_H
#define PUBU_H
#include <QWidget>
#include <QPushButton>
#include <QMouseEvent>
#include <QEvent>
#include <QDebug>
class pubu : public QPushButton
{
Q_OBJECT
public:
explicit pubu(QWidget *parent = nullptr);
void mouseMoveEvent(QMouseEvent *e);
void leaveEvent(QEvent *e);
signals:
void Mouse_In();
void Mouse_Out();
public slots:
};
#endif // PUBU_H |
|
pubu.cpp
C++ (Qt) |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| #include "pubu.h"
pubu::pubu(QWidget *parent) : QPushButton(parent)
{
this->setMouseTracking(1);
}
void pubu::mouseMoveEvent(QMouseEvent *e)
{
// qDebug() << "mouse in " << e->isAccepted();
emit Mouse_In();
}
void pubu::leaveEvent(QEvent *e)
{
// qDebug() << "mouse out " << e->isAccepted();
emit Mouse_Out();
} |
|