Bienvenue sur le forum !

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

Qt 5 : 5.8.0 - Qt Creator : 4.2.2 - Qt Installer : 2.0.3 - JOM : 1.1.2 - Qt Build suite : 1.7.0 - VS Qt 5 : 2.0.0

[Qt4] Superposition de QWidget

Bonjour,

j'ai designé une IHM principale dans les limites de laquelle toute mon appli va se dérouler. J'ai un certain nombre de widgets qui s'ouvrent et se ferment à la demande. Il faut savoir que tous ces widgets ont des fonds transparents.
Mes deux soucis sont les suivants :
- Je crée une zone d'infos (un widget créé à part) sur ma fenêtre principale, ce qui me cache l'accès aux évènements souris arrivant sur les éléments du dessous. Comment faire passer cette zone d'info SOUS les éléments de ma fenêtre ? Ou au moins leur transmettre l'évènement souris ?

- Lorsque je rends invisible l'un de mes widgets précédement ouvert au dessus d'un autre, il y a une rémanence de celui qui disparaît sur celui qui était dessous. Comment donc imposer le repaint du widget qui était dessous ? Sachant que je ne sais pas forcément lequel sera dessous...

J'espère que je suis suffisement clair.

Réponses

  • Bon, on me souffle que ce n'est pas possible facilement et qu'il faut parcourir tous les objets afin de vérifier s'ils sont ou pas sous la souris :
        QList<QWidget*> widgets = parentWidget()->findChildren<QWidget*>();
    foreach(QWidget *widget, widgets)
    if(widget != this && widget->geometry().contains(event->pos()))
    {
    QCoreApplication::postEvent(widget, new QMouseEvent(*event));
    break;
    }
    Merci Auia ;)

    Comme les zones concernées ne sont pas les enfants mais les petits-enfants de ma fenêtre principale, ça démultiplie la recherche... Mais si c'est la seule solution...

    Restent les pb de rémanence :)
Connectez-vous ou Inscrivez-vous pour répondre.