IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Discussion :

Création d'une seconde fenêtre non désirée

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 26
    Par défaut Création d'une seconde fenêtre non désirée
    Bonjour à tous,

    J'essaye de mettre un simple QLabel dans ma fenêtre, malheureusement, le seul résultat auquel je suis arrivé, c'est la création d'une minuscule fenêtre (autre que la principale) contenant le Qlabel.

    Voici le source :
    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
    54
    55
    56
    57
    58
    59
     
    #include "mainwindow.h"
     
    //////////////////
    // Constructeur //
    //////////////////
    MainWindow::MainWindow (QWidget *parent) : QMainWindow(parent) {
        this->initComponents (parent);
        this->initConnections ();
    }
     
    /////////////////
    // Destructeur //
    /////////////////
    MainWindow::~MainWindow () {
     
    }
     
    //////////////
    // Méthodes //
    //////////////
    void MainWindow::initComponents (QWidget *parent) {
        // Window Initialisation
        this->setWindowTitle (" - QComix");
        this->resize (1024, 768);
     
        // Menus Initilisation
        menuFile = this->menuBar ()->addMenu ("&File");
        menuEdit = this->menuBar ()->addMenu ("&Edit");
        menuView = this->menuBar ()->addMenu ("&View");
        menuHelp = this->menuBar ()->addMenu ("Help");
     
        actionOpen = this->menuFile->addAction ("&Open");
        actionQuit = this->menuFile->addAction ("&Quit");
        actionAboutQt = this->menuHelp->addAction ("About &Qt");
     
        actionQuit->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q));
     
        // Widget Initialisation
        label = new QLabel;
        label->setText ("This is a try ! Does it work ?");
        label->show ();
        mainGridLayout = new QGridLayout;
        mainGridLayout->addWidget (label, 0, 0);
     
        this->setLayout (mainGridLayout);
    }
     
    void MainWindow::initConnections () {
        // Menus
        connect (actionQuit, SIGNAL (triggered ()), qApp, SLOT (quit ()));
        connect (actionAboutQt, SIGNAL (triggered ()), qApp, SLOT (aboutQt ()));
        connect (actionOpen, SIGNAL (triggered ()), this, SLOT (openDialog ()));
    }
     
    void MainWindow::openDialog () {
        // QString file = QFileDialog::getOpenFileName(this, "Open a file", QString(), "Pictures (*.png *.gif *.jpg *.jpeg)");
        // label.setPixmap (QPixmap (file));
    }
    Savez-vous ce qui cloche dans mon code pour que Qt affiche une deuxième fenêtre plutôt que de mettre mon composant dans ma fenêtre principale ?

    Merci d'avance,
    Elhina

  2. #2
    Membre Expert
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Par défaut
    Bonjour,

    Comme ceci peut-être?:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     // Widget Initialisation
        label = new QLabel;
        label->setText ("This is a try ! Does it work ?");
        mainGridLayout = new QGridLayout;
        mainGridLayout->addWidget (label, 0, 0);
     
        this->setLayout (mainGridLayout);
        label->show ();
    Il faut afficher le label après l'avoir ajouté à un objet parent... Sinon il va se créer lui-même une fenêtre

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 26
    Par défaut
    Ok, mais ça ne fonctionne toujours pas.

    Par contre, je n'avais pas vu, mais j'ai ceci à la console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QWidget::setLayout: Attempting to set QLayout "" on MainWindow "", which already has a layout
    Il me dit que j'essaye de mettre un Layout là, mais pourtant c'est la seule partie du code où il y a un layout.
    Peut-être que c'est parce que la mainWindow a comme parent QMainWindow qui contiendrait déjà un layout ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 26
    Par défaut
    Voilà, c'est bon, j'ai mis en place un QWidget corespondant à la zone centrale de l'application, et maintenant ça fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Widget Initialisation
        mainArea = new QWidget;
        label = new QLabel;
        label->setText ("This is a try ! Does it work ?");
        mainGridLayout = new QGridLayout;
        mainGridLayout->addWidget (label, 0, 0);
     
        mainArea->setLayout (mainGridLayout);
        this->setCentralWidget (mainArea);
        this->show ();
    }
    Bon par contre, le placement se trouve au milieu à gauche, c'est bizarre mais c'est un autre problème

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créer une seconde fenêtre avec paramètres
    Par schnnic dans le forum Langage
    Réponses: 5
    Dernier message: 24/08/2009, 13h43
  2. Création d'une nouvelle base non vue par DBASTUDIO
    Par union dans le forum Administration
    Réponses: 1
    Dernier message: 16/10/2008, 16h25
  3. création d'une nouvelle fenêtre
    Par Dohmaker dans le forum ASP.NET
    Réponses: 3
    Dernier message: 17/10/2007, 21h05
  4. Création d'une nouvelle fenêtre
    Par Jiyuu dans le forum Général Python
    Réponses: 6
    Dernier message: 29/06/2007, 15h50
  5. Création d'une deuxième fenêtre windows
    Par stabilo dans le forum MFC
    Réponses: 5
    Dernier message: 03/03/2006, 19h44

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