Bonjour, dans mon application sur MacOSX je veux donner à l'utilisateur l'option "réduire au plateau". J'utilise Qt5 et j'ai réécrit la fonctionRéduire au plateau sur MacOSX
changeEvent(QEvent *event)
. Là, je fais quelque chose comme
switch(event->type())
{
case QEvent::WindowStateChange:
{
if (this->windowState() & Qt::WindowMinimized) {
if(*option minimize to tray enable*) {
event->ignore();
QTimer::singleShot(0, this, SLOT(hide()));
}
}
break;
}
default:
break;
}
Eh bien, il fonctionne sur Linux et Windows, mais le problème est que dans MacOSX ce code ne fonctionne pas correctement et crée un bug. En effet la fenêtre est toujours minimisée dans la barre des tâches (en dehors du dock) et de plus, si la fenêtre est redimensionnée à partir de la barre des tâches au lieu de l'icône de la barre, l'interface graphique est bloquée et ne change pas. L'interface graphique peut toujours envoyer des signaux mais elle ne peut pas changer. Je dois reshow la fenêtre de l'icône de plateau pour débloquer l'interface graphique. Puis la question: Comment puis-je éviter de réduire la fenêtre dans la barre des tâches sur MacOSX? Une autre question connexe: J'ai lu un forum où un utilisateur parle d'un "comportement standard" dans MacOSX, comme par exemple ne pas fermer l'application quand on clique sur le bouton "x", ou ne pas utiliser l'icône de plateau ecc . ecc .... Quelqu'un peut poster un lien officiel comment une application devrait se comporter dans MacOSX?
Merci beaucoup à tout le monde
mmm merci pour le commentaire.La chose étrange est que l'application a également une option "proche du plateau", et cela fonctionne bien. Mais j'utilise la même fonction Qt "hide()". Je vais enquêter sur ce que vous dites sur la différence entre close et orderOut. Merci. – n3mo
Eh bien, si 'hide()' est un wrapper autour de '-orderOut:', alors cela fonctionnerait bien pour "close to tray". Comme je le dis, '-close' et' -orderOut: 'sont vraiment très similaires, sauf pour quelques cas de coin. Vraisemblablement, la fenêtre n'est pas minimisée dans le cas du "close to tray", donc l'une de ces différences ne serait pas pertinente. –