Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    septembre 2018
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2018
    Messages : 90
    Points : 48
    Points
    48

    Par défaut Priorité sur l'affichage de fenêtres

    Bonjour à tous,

    je développe sur Qt Creator, où j'ai créé 2 fenêtres, la principale et une seconde. Lorsque j'appuie sur un bouton, je demande à ouvrir la deuxième fenêtre.
    Alors j'avais deux possibilités:
    Fenetre2->exec(); <-- le problème est que je n'ai plus la main sur la fenêtre principale tant que je ne l'ai pas fermé.*
    Fenetre2->show(); <-- j'ai la main sur la fenêtre principale mais la deuxième fenêtre reste toujours en avant et même si je déplace la fenêtre principale, elle reste toujours derrière celle-ci.

    Comment puis-je faire pour que la fenêtre sur laquelle la souris est (en cliquant dessus), passe devant l'autre.

    J'espère avoir été clair, si ce n'est pas le cas, n'hésitez pas à me le dire.

    Merci à tous

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    juillet 2010
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : juillet 2010
    Messages : 105
    Points : 179
    Points
    179

    Par défaut

    Salut,
    Essai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void MainWindow::releaseFocus()
    {
       setWindowFlags(windowFlags() & ~Qt::WindowStaysOnTopHint);
       show();
    }

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    septembre 2018
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2018
    Messages : 90
    Points : 48
    Points
    48

    Par défaut

    Bonjour,

    alors j'ai ajouté ce bout de code, puis j'ai ajouté la déclaration de la fonction dans la class au niveau des "private slots:" mais cela ne fonctionne pas, c'est à dire quand mettant un point d'arrêt dans la fonction, le soft n'y va pas.
    Alors j'ai déplacé ce code ailleurs, mais aucun effet.

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    juillet 2010
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : juillet 2010
    Messages : 105
    Points : 179
    Points
    179

    Par défaut

    Salut,
    Je ne sais pas ce que tu as fait, mais moi avec show(), j'ai par défaut le choix du focus et la fenêtre en top est celle qui à le focus :
    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
    //mainwindow.h
     
    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
     
    #include <QMainWindow>
    #include <QPushButton>
    #include <QDialog>
     
    namespace Ui {
    class MainWindow;
    }
     
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
     
    public slots:
          void openWindow();
     
    public:
        explicit MainWindow(QWidget *parent = nullptr);
        ~MainWindow();
     
    private:
        QPushButton *button;
        QDialog *dialog;
    };
     
    #endif // 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
    19
    20
    21
    22
    23
    24
    25
    26
    //mainwindow.cpp
     
    #include "mainwindow.h"
    #include <QDebug>
     
    void MainWindow::openWindow()
    {
        qDebug() << "test";
        dialog = new QDialog();
        dialog->show();
     
    }
     
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        dialog(nullptr)
    {
        button = new QPushButton("Open new window", this);
        QObject::connect(button, SIGNAL(pressed()),
                           this,  SLOT(openWindow()));
    }
     
    MainWindow::~MainWindow()
    {
        delete dialog;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include "mainwindow.h"
    #include <QApplication>
     
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        MainWindow w;
        w.show();
     
        return a.exec();
    }

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/09/2016, 13h54
  2. Réponses: 2
    Dernier message: 21/02/2014, 09h24
  3. Priorité d'affichage de fenêtres
    Par guillome29 dans le forum IHM
    Réponses: 3
    Dernier message: 03/05/2013, 11h18
  4. [WD17] Boucler sur un affichage d'une fenêtre
    Par GiGii dans le forum WinDev
    Réponses: 16
    Dernier message: 14/01/2013, 11h56
  5. [Kylix] Problème d'affichage de fenêtres
    Par Progs dans le forum EDI
    Réponses: 1
    Dernier message: 01/01/2005, 02h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo