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 :

Problème d'affichage ScrollArea dans un QTabItem

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de Momoth
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 318
    Par défaut Problème d'affichage ScrollArea dans un QTabItem
    Bonjour à tous,

    Mon problème est le suivant.

    J'ai un QTabWidget, et dans un de ses onglets je voudrais 3 éléments :

    - un QLabel au centre en haut du layout
    - une liste de bouton à gauche
    - une image a droite

    La liste de bouton doit être scrollable car c'est l'utilisateur qui indiquera les boutons affiché par la suite. On a donc un nombre inconnu de bouton (et donc si trop peu, pas de scrollbar).

    J'ai donc opter pour un QGridLayout pour placer mes éléments dans mon onglet.

    Le problème que j'ai est que si le QLabel s'affiche là ou je le souhaite, ce n'est pas le cas du reste. Mon QScrollArea prend l'intégralité du reste du layout et de ce fait mon image ne s'affiche pas, et ce quelques soit le nombre d'élement dans le QScrollArea. Dans le cas où je met l'ajout de la ScrollArea à ma grid en commentaire, l'image s'affiche parfaitement.

    Voici mon code :

    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
     
        QWidget* monTab = new QWidget;
        QGridLayout* grid = new QGridLayout;
     
        QLabel* lab = new QLabel;
        lab->setText("Gestion des ambiances");
     
        QScrollArea* area = new QScrollArea;
     
        QWidget* w = new QWidget;
     
        QVBoxLayout* box = new QVBoxLayout;
     
        for(int i = 1; i < 21; i++)
        {
            QPushButton* button = new QPushButton;
            button->setText("Test " + QString::number(i));
            box->addWidget(button);
        }
     
        w->setLayout(box);
     
        area->setWidget(w);
     
        QStringList calcsAmbiance;
        ImageChateau* imageAmbiance = new ImageChateau(this, "/home/anthony/Projets_Qt/test.png", calcsAmbiance);
     
     
        grid->addWidget(lab, 0, 0, 1, 2, Qt::AlignCenter);
        grid->addWidget(area, 1, 0);
        grid->addWidget(imageAmbiance, 1, 1);
     
        monTab->setLayout(grid);
     
        tab->addTab(monTab, "Ambiance 2");
    tab est mon QTabWidget déclaré dans mon .h

    Je vous remercie de votre aide.

  2. #2
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Par défaut
    Bonjour,

    Que se passe-t-il si vous remplacez ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    grid->addWidget(area, 1, 0);
    grid->addWidget(imageAmbiance, 1, 1);
    Par ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    grid->addWidget(area, 1, 0, 1, 1);
    grid->addWidget(imageAmbiance, 1, 1, 1, 1);
    ? De même, quelle est la classe de base de ImageChateau ?

    Bonne journée,
    Louis
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  3. #3
    Membre émérite Avatar de Momoth
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 318
    Par défaut
    Bonjour,

    Effectivement rajouter les spans règlent le problème d'affichage. Par contre je comprends pas trop la nuance entre des spans a 1 et ne pas en mettre du tout ?

    Voici la classe ImageChateau

    ImageChateau.h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class ImageChateau : public QWidget
    {
        Q_OBJECT
    public:
        explicit ImageChateau(QWidget *parent = 0);
        ImageChateau(QWidget *parent, QString unChemin, QStringList desCalcs);
     
    private:
        void paintEvent(QPaintEvent *);
        QString chemin;
        QStringList calcs;
    };
    ImageChateau.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
    ImageChateau::ImageChateau(QWidget *parent) :
        QWidget(parent)
    {
    }
     
    ImageChateau::ImageChateau(QWidget* parent, QString unChemin, QStringList desCalcs) : QWidget(parent)
    {
        this->chemin = unChemin;
        this->calcs = desCalcs;
    }
     
    void ImageChateau::paintEvent(QPaintEvent *)
    {
        QPainter painter(this);
     
        int height = this->parentWidget()->height();
        int width = this->parentWidget()->width();
     
        QPixmap pixmap;
     
        pixmap.load(this->chemin);
     
        painter.drawPixmap(0, 0, width * 0.66, height * 0.9, pixmap);
     
        foreach(QString calc, this->calcs)
        {
            pixmap.load(calc);
            painter.drawPixmap(0, 0, width * 0.66, height * 0.9, pixmap);
        }
     
        painter.end();
    }
    En tout cas merci pour votre aide, mon problème est résolue .

  4. #4
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Par défaut
    Bonjour,

    Aucune idée pour le rowSpan et le columnSpan, mais tant mieux si ça marche, j'ai envie de dire.
    Un petit conseil pour la fluidité de votre affichage : chargez plutôt vos QPixmap dans votre constructeur et non à chaque tour du paintEvent, cela constituera un gros gain de temps.

    Bonne journée,
    Louis
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

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

Discussions similaires

  1. Problème d'affichage dynamique dans un .hta
    Par sebastienadam dans le forum Balisage (X)HTML et validation W3C
    Réponses: 0
    Dernier message: 03/08/2009, 16h33
  2. [Custom Control] Comment résoudre un problème d'affichage uniquement dans Blend ?
    Par choas dans le forum Windows Presentation Foundation
    Réponses: 15
    Dernier message: 29/09/2008, 12h23
  3. Réponses: 5
    Dernier message: 14/06/2008, 08h32
  4. [Tableaux] problème d'affichage visuel dans fenêtre
    Par kitty2006 dans le forum Langage
    Réponses: 2
    Dernier message: 19/09/2006, 17h23
  5. [FLASH 8] Problème d'affichage flash dans ie
    Par ph_anrys dans le forum Flash
    Réponses: 5
    Dernier message: 22/02/2006, 14h58

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