Bonjour,

J'essaye de faire fonctionner Qt avec Ogre, et je rencontre un problème avec le déplacement de la souris:

j'arrive à récupérer tous les clics, mais je ne récupère le mouvement de la souris que lorsqu'un bouton de la souris est enfoncé...
J'ai essayé pas mal de choses, comme la méthode setMouseTracking(true), ainsi que bool eventFilter(QObject* object, QEvent* event)...

Je suis à cours d'idées pour l'instant...

Voici la partie principale de mon code:

MainWindow.h:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
 
class MainWindow: public QMainWindow{
 
    Q_OBJECT
 
	private:
		int m_width, m_height;
		OgreWidget* m_pRenderWindow;
 
    public slots:
		void show();
 
	public:
		MainWindow(const int width = DEFAULT_W, const int height = DEFAULT_H);
 
		bool eventFilter(QObject* object, QEvent* event);
};
MainWindow.cpp:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 
 
MainWindow::MainWindow(const int width, const int height)
:m_width(width),
 m_height(height),
 m_pRenderWindow(NULL){
 
	resize(m_width, m_height);
 
	QWidget* pView = new QWidget(this);
 
	try{
 
		m_pRenderWindow = new OgreWidget();
 
		QVBoxLayout* pLayout = new QVBoxLayout();
		pLayout->addWidget(m_pRenderWindow);
 
		pView->setLayout(pLayout);
 
	}catch(...){
		QApplication::quit();
	}
 
	startTimer(50);
	setCentralWidget(pView);
}
 
/**
 *
 */
bool MainWindow::eventFilter(QObject* object, QEvent* event){
 
	Q_UNUSED(object);
 
	if( event->type() == QEvent::MouseMove ){
 
		QMouseEvent* mouse = static_cast<QMouseEvent*>(event);
		m_pRenderWindow->mouseMoveEvent(mouse);
	}
 
	return false;
}
 
/**
 *
 */
void MainWindow::show(){
 
	m_pRenderWindow->installEventFilter(this);
	m_pRenderWindow->setMouseTracking(true);
	QMainWindow::show();
}
main.cpp:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
 
int main(int argc, char** argv){
 
	QApplication app(argc, argv);
 
	MainWindow win;
	win.show();
 
	return app.exec();
}