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 :

Accesseurs ou données communes

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 316
    Par défaut Accesseurs ou données communes
    Bonjour,

    J'ai une fenetre principale (QtGestXavMedias.ui) et une fenetre secondaire (GXMGestionUtilisateurs.ui), crées par QtDesigner.

    Dans la fenetre secondaire (GXMGestionUtilisateurs.ui), j'ai un Qcombobox (Nom-Utilisateur) et un QPushButton (Charger)

    Dans ma fenetre principale (QtGestXavMedias.ui), j'ai un QLabel (ListeUtilisateurs).

    En Cliquant, dans la fenetre secondaire, sur le QPushButton, je voudrais recuperer le texte du QCombobox dans ma fenetre principale, dans QLabel.

    comment puis-je declarer un
    QString communs au deux fenetres ?

    Cordialement

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 775
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 775
    Par défaut


    Il me semble que tu devrais plus regarder du côté des signaux et slots : quand la chaîne change d'un côté, tu envoies de l'autre sa nouvelle valeur. Tu peux envoyer le signal à chaque fois que le texte change, pas besoin d'avoir un appui sur un bouton.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 316
    Par défaut Une solution...
    Bonjour,

    voici une solution (merci a toi durouc05) :

    GXMGestionUtilisateurs.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
     
    #ifndef GXMGESTIONUTILISATEURS_H
    #define GXMGESTIONUTILISATEURS_H
    #include <QDialog>
    namespace Ui {
        class GXMGestionUtilisateurs;
    }
    class GXMGestionUtilisateurs : public QDialog
    {
        Q_OBJECT
    public:
        explicit GXMGestionUtilisateurs(QWidget *parent = 0);
        ~GXMGestionUtilisateurs();
    signals:
        void displayText(const QString &text);
    private slots:
        void on_Charger_clicked();
        void on_Nouveau_clicked();
    private:
        Ui::GXMGestionUtilisateurs *ui;
    };
    #endif // GXMGESTIONUTILISATEURS_H
    QtGestXavMedias.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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    #ifndef QTGESTXAVMEDIAS_H
    #define QTGESTXAVMEDIAS_H
    #include <QPixmap>
    #include <QMainWindow>
    class Fen2;
    namespace Ui {
        class QtGestXavMedias;
     
    }
    class QtGestXavMedias : public QMainWindow
    {
        Q_OBJECT
    public:
        explicit QtGestXavMedias(QWidget *parent = 0);
        ~QtGestXavMedias();
    protected:
        void AfficheFicheFilm();
        void FicheFilmAleatoire();
        void resizeEvent(QResizeEvent *event);
    private slots:
        void on_Suivant_clicked();
        void on_Precedant_clicked();
        void on_FermFen2_clicked();
        void on_OuvFen2_clicked();
        void on_GestionListeUtilisateurs_clicked();
    private:
        Ui::QtGestXavMedias *ui;
        Fen2 *dial;
        void updateImage();
        QPixmap originalPixmap;
        QString MyAppDirPath, NomFicheFilm, filename, CheminFicheFilmFilm, CheminFicheFilmJpg,
        titre1, realisateur1, annee1, pays1, genre1, duree1, acteurs1, resume1, distrib1, comment1, titreorig1;
        QStringList listFilter, fileList;
        int NombreFilms, nbAlea, NumFiche;
    };
    #endif // QTGESTXAVMEDIAS_H
    GXMGestionUtilisateurs.cpp :
    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
     
    #include <QtGui>
    #include "GXMGestionUtilisateurs.h"
    #include "ui_GXMGestionUtilisateurs.h"
    #include "QtGestXavMedias.h"
    GXMGestionUtilisateurs::GXMGestionUtilisateurs(QWidget *parent) :
        QDialog(parent),
        ui(new Ui::GXMGestionUtilisateurs)
    {
        ui->setupUi(this);
        setWindowTitle(tr("Gestion des utilisateurs : "));
        //setFixedHeight(sizeHint().height());
        //move( ( QApplication::desktop()->width() - width() ) /2 ,  ( QApplication::desktop()->height() - height() ) / 2 );
    }
    GXMGestionUtilisateurs::~GXMGestionUtilisateurs()
    {
        delete ui;
    }
    void GXMGestionUtilisateurs::on_Charger_clicked()
    {
        emit displayText(ui->Nom_Utilisateur->itemText(0));
    }
    QtGestXavMedias.cpp :
    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
     
    #include <QtGui>
    #include "QtGestXavMedias.h"
    #include "fen2.h"
    #include "GXMGestionUtilisateurs.h"
    #include "ui_QtGestXavMedias.h"
    QtGestXavMedias::QtGestXavMedias(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::QtGestXavMedias)
    {
        ui->setupUi(this);
        setWindowTitle(tr("QtGestXavMedias 001")); // met titre de la fenetre
        move( ( QApplication::desktop()->width() - width() ) / 2,  ( QApplication::desktop()->height() - height() ) / 2 ); // pour centrer la fenetre sur l'ecran
        MyAppDirPath =  QCoreApplication::applicationDirPath(); // recupere le chemin du programme
        FicheFilmAleatoire(); // recupere une fiche film dans le repertoire designé dans le combobox ListeDe
        AfficheFicheFilm(); // affichage de la fiche film
        dial = new Fen2(this); // affiche la 2eme fenetre en non modale
        dial->hide(); // cache la 2eme fenetre
    }
    QtGestXavMedias::~QtGestXavMedias()
    {
        delete ui;
    }
    void QtGestXavMedias::AfficheFicheFilm()
    {
        filename = CheminFicheFilmFilm; // charge le chemin de la fiche film
        QFile fichier(filename); // gestion de fichier
        fichier.open(QIODevice::ReadOnly | QIODevice::Text); // on ouvre le fichier
        QTextStream flux(&fichier); // dans un flux?...
        ui->label_2->setText( flux.readLine()); // on stocke la premiere ligne dans titre1
        ui->label_3->setText( flux.readLine()); // on stocke la 2eme ligne dans realisateur1
        ui->label_4->setText( flux.readLine()); // on stocke la 3eme ligne dans annee1
        ui->label_5->setText( flux.readLine()); // on stocke la 4eme ligne dans pays1
        ui->label_6->setText( flux.readLine()); // on stocke la 5eme ligne dans genre1
        ui->label_7->setText( flux.readLine()); // on stocke la 6eme ligne dans duree1
        ui->label_8->setText( flux.readLine()); // on stocke la 7eme ligne dans acteurs1
        //resume1 = flux.readLine(); // on stocke la 8eme ligne dans resume1
        ui->textEdit->append(flux.readLine());
        distrib1 = flux.readLine(); // on stocke la 9eme ligne dans distrib1
        comment1 = flux.readLine(); // on stocke la 10eme ligne dans comment1
        titreorig1 = flux.readLine(); // on stocke la 11eme ligne dans titreorig1
        originalPixmap = QPixmap (CheminFicheFilmJpg); // charge l'image pointee
        updateImage(); // affiche l'image
    }
    void QtGestXavMedias::FicheFilmAleatoire()
    {
        listFilter << "*.film"; // on ne vas chercher que les fichiers avec l'extension .film
        QDirIterator dirIterator((MyAppDirPath + "/Xavier"), listFilter ,QDir::Files | QDir::NoSymLinks, QDirIterator::Subdirectories);
        // On déclare un QDirIterator dans lequel on indique que l'on souhaite parcourir un répertoire et ses sous-répertoires.
        // De plus, on spécifie le filtre qui nous permettra de récupérer uniquement les fichiers du type souhaité.
        while(dirIterator.hasNext()) // Tant qu'on n'est pas arrivé à la fin de l'arborescence...
        {
            dirIterator.next(); // fichier suivant
            fileList << dirIterator.fileName(); // stocke le nom du fichier dans filelist
        }
     
        fileList.replaceInStrings(".film",""); // on supprime l'extension .film
        NombreFilms = fileList.count(); // on compte le nombre de fichiers extrait
        qsrand( QDateTime::currentDateTime().toTime_t() ); // initialisation du random
        nbAlea = (qrand() % NombreFilms); // random de 1 a nombre de fiche films
        NomFicheFilm = fileList.at(nbAlea); // on charge la fiche film pointer par random
        CheminFicheFilmFilm = (MyAppDirPath + "/Xavier/" + NomFicheFilm + ".Film"); // reconstruit le chemin du fichier film
        CheminFicheFilmJpg = (MyAppDirPath + "/Xavier/" + NomFicheFilm + ".Jpg"); // // reconstruit le chemin du fichier jpg
        NumFiche = nbAlea; // stocke  n° de la fiche choisi.
    }
      void QtGestXavMedias::resizeEvent(QResizeEvent * /* event */) //sous programme dimension image en fonction de QLabel
      {
          QSize scaledSize = originalPixmap.size();
          scaledSize.scale(ui->label->size(), Qt::KeepAspectRatio);
          if (!ui->label->pixmap()|| scaledSize != ui->label->pixmap()->size()) updateImage();
      }
      void QtGestXavMedias::updateImage() // sous prog appelé ci-dessus
      {
          ui->label->setPixmap(originalPixmap.scaled(ui->label->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation));
          // en gardant les proportions, redimensionner l'image pour les dimensions du label
      }
    void QtGestXavMedias::on_OuvFen2_clicked()
    {
        dial->show(); // affiche la 2eme fenetre en non modale
    }
    void QtGestXavMedias::on_FermFen2_clicked()
    {
        dial->hide(); // cache la 2eme fenetre
    }
    void QtGestXavMedias::on_Suivant_clicked()
    {
        if (NumFiche<NombreFilms-1) //si la fiche pointée est inferieur au nbre de fiches
        {
          NumFiche++; //
          NomFicheFilm = fileList.at(NumFiche);
          CheminFicheFilmFilm = (MyAppDirPath + "/Xavier/" + NomFicheFilm + ".Film");
          CheminFicheFilmJpg = (MyAppDirPath + "/Xavier/" + NomFicheFilm + ".Jpg");
        }
        AfficheFicheFilm();
    }
     
    void QtGestXavMedias::on_Precedant_clicked()
    {
        if (NumFiche>0)
        {
          NumFiche--;
          NomFicheFilm = fileList.at(NumFiche);
          CheminFicheFilmFilm = (MyAppDirPath + "/Xavier/" + NomFicheFilm + ".Film");
          CheminFicheFilmJpg = (MyAppDirPath + "/Xavier/" + NomFicheFilm + ".Jpg");
        }
        AfficheFicheFilm();
    }
     
    void QtGestXavMedias::on_GestionListeUtilisateurs_clicked()
    {
        GXMGestionUtilisateurs dialog(this);
        connect(&dialog, SIGNAL(displayText(QString)), ui->ListeUtilisateurs, SLOT(setText(QString)));
        dialog.exec(); // affiche la 3eme fenetre en modale (on ne peut pas acceder a la fenetre principale).
    }
    Merci a lorrio, "un etranger venu d'ailleur, voir duzero", pour cette solution.

    Cordialement

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

Discussions similaires

  1. [Designer V5-V6] Liaisons incorrectes sur des données communes
    Par tang121 dans le forum Débuter
    Réponses: 15
    Dernier message: 06/07/2010, 16h14
  2. Problème pour trouver les données commune dans une requête
    Par Winterrage dans le forum Langage SQL
    Réponses: 3
    Dernier message: 08/02/2008, 10h14
  3. concatener 2 feuilles de données ayant des données communes
    Par azzar dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 31/01/2008, 22h52
  4. Incorporation d’un sous rapport dans un rapport, sans données communes
    Par sgrosjean94 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 28/09/2006, 12h05
  5. Réponses: 6
    Dernier message: 02/09/2005, 20h36

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