Bienvenue sur le forum !

Si vous souhaitez rejoindre la communauté, cliquez sur l'un de ces boutons !

Qt 5 : 5.9.1 - Qt Creator : 4.3.1 - Qt Installer : 2.0.3 - JOM : 1.1.2 - Qt Build suite : 1.7.0 - VS Qt 5 : 2.0.0

Empêcher le déplacement d'une fenêtre

Bonjour,

Je cherche à empêcher le déplacement d'une fenêtre sur Mac OS X.

J'ai déjà essayé de replacer la fenêtre à son emplacement d'origine grace aux méthodes mousePressEvent et mouseMoveEvent

Cela marche bien tant que le curseur reste à l'intérieur de la fenêtre (QWidget), mais si l'utilisateur saisit la barre de la fenêtre (la où il y a les boutons fermer, agrandir, ) les évenements de sont pas émis.

J'ai ensuite essayé d'installer un eventfilter. J'ai remarqué que les évènements QEvent::NonClientAreaMouseButtonPress et QEvent::NonClientAreaMouseButtonRelease sont émis au moment ou l'utilisateur clic sur la barre de la fenêtre avant de la déplacer et au moment ou il l'a relache après l'avoir déplacée.
this->installEventFilter(this);
bool MyWidget::eventFilter(QObject* pObject, QEvent* pEvent)
{
if(dragWindow)
this->move(originalPosition);


if(pEvent->type() == QEvent::NonClientAreaMouseButtonPress)
{
dragWindow = true;
}
else if(pEvent->type() == QEvent::NonClientAreaMouseButtonRelease)
{
dragWindow = false;
}
}
Cependant, avec le code ci-dessus, l'utilisateur peut toujours déplacer la fenêtre, qui sera remise à sa place lorsqu'il la lache. Comment faire pour qu'il ne puisse pas même la déplacer?

Je sais qu'une solution serait de passer par une Qt::SplashScreen mais je précise que je veux garder la barre de la fenêtre.

Une idée ?

Merci d'avance

Réponses

Connectez-vous ou Inscrivez-vous pour répondre.