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 :

Début avec QScrollArea

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    chargé d'étude incendie
    Inscrit en
    Mai 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : chargé d'étude incendie
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 6
    Par défaut Début avec QScrollArea
    Bonsoir, je suis entrain de réaliser un projet avec QT et je rencontre un petit soucis pour mettre une barre de défilement. J'ai fait différente tentative et différente recherche pour résoudre ce problème sans succès.

    J'ai sur une page dialogue, plusieurs label avec du texte qui est plus grand que la fenêtre et donc je souhaiterai mettre une barre de défilement pour permettre de lire tout le texte.

    En continuant de chercher et en fessant des essais j'ai finit par trouver une solution qui marche pour un QMainWindow mais comme je veux faire sa sur un QDialog, j'essai de l'adapter mais je ne sais pas comment.

    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
     
    #include <QtGui>
     
    normenf541::nor541(QString &code, QWidget *parent = 0) : QDialog(parent)
      {
        setFixedSize(900,600); // dimention de la fenetre
        setWindowIcon(QIcon("icones/icone feu.png")); // icone fenetre
        setWindowTitle("JVE CONCEPT v0.0"); // nom afficher fenetre
        setStyleSheet("background-color: rgb(255,255,255)");//couleur fenetre
     
        grid = new QGridLayout;
        scrollArea = new QScrollArea;
        scrolledWidget = new QWidget;
     
    label1 = new QLabel;
        label1->setText(" ........");
        label1->setFont(QFont("Arial",16)); // police et taille bouton
        label2 = new QLabel;
        label2->setText("...........");
        label2->setFont(QFont("Arial",12)); // police et taille bouton
        label3 = new QLabel;
        label3->setText("<br />Introduction<br />"); // choix du texte
        label3->setFont(QFont("Arial",10)); // police et taille bouton
     
         grid->addWidget(label1, 0, 0 );
         grid->addWidget(label2, 1, 0 );
         grid->addWidget(label3, 2, 0 );
     
         scrolledWidget->setLayout(grid);
         scrollArea->setWidget(scrolledWidget);
         scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
     
        setCentralWidget(scrollArea);
     
       }
    Quand je compile j'ai ce message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    In constructor 'nor541::nor541(Qstring& Qwidget*)':
    'setCentralWidget' was not declared in this scope
    Je sais que setCentralWidget est lié à QMainWindow, j'ai donc tenter de le remplacer par

    Avec cette ligne je n'est plus le message d'erreur de compilation mais je n'est toujours pas la barre de défilement.

    Pouvez vous me dire ce que je doit encore modifier pour que sa marche sur mon QDialog

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Le message est pourtant clair : tu essayes de faire appel à la fonction setCentralWidget qui n'existe pas pour la classe (ni pour les classes parentes, d'ailleurs).

    Et pour cause, setCentralWidget n'existe que dans la classe QMainWindow et, pour autant que je m'en souvienne, c'est à mettre en relation avec les dock area.

    Ceci diit, je ne crois pas que cette fonction soit indispensable, vu que ta surface de scroll a déjà le widget sur lequel elle doit agir (la grille).

    Par contre, il faut sans doute veiller à placer la surface de déplacement dans le layout de la boite de dialogue (sans doute par un en créant un layout dans lequel tu mettra ta scrollArea et en l'ajoutant à ta boite de dialogue avec setLayout(scrollArea); ou en rajoutant directement ta scrollArea au layout de la boite de dialogue sous une forme proche de layout()->addWidget(scrollArea) )
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre habitué
    Homme Profil pro
    chargé d'étude incendie
    Inscrit en
    Mai 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : chargé d'étude incendie
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 6
    Par défaut
    Je te remercie pour ta réponse qui ma permit de savoir que setCentralWidget ne marche que dans un seul cas, sa me permettra d'éviter de futur erreur.

    J'ai fait un essai en supprimant
    setCentralWidget(scrollArea);
    ce qui me supprime le message d'erreur mais ne fait pas l'effet que je désire qui est la barre de défilement vertical. Je les remplacer par
    setLayout(scrollArea);
    et j'obtient un nouveau message d'erreur qui est :

    In constructor 'normenf541::norenf541(QString&, Qwidget*)':
    no maching function for call normnf541::setlayout(QScrollArea*&)'
    candidates are: void QWidget::setlayout(QLayout*)

  4. #4
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Et pour cause, la scrollArea est un widget, et doit donc etre placée dans un layout...

    Tu as donc deux solutions : soit tu crées un layout à toi (pour pouvoir rajouter d'autres widget aux cotés de ta scrollarea), soit tu rajoute le widget au layout de la boite de dialogue
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Membre habitué
    Homme Profil pro
    chargé d'étude incendie
    Inscrit en
    Mai 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : chargé d'étude incendie
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 6
    Par défaut
    Je te remercie pour ton aide, j'ai mit un petit moment à comprendre ce que tu voulais dire mais cette fois ces bon sa marche. Il me reste plus qu'à le mettre de couleur gris pour ce distinguer de ma fenêtre blanche.

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

Discussions similaires

  1. [AJAX] Débuts avec Sajax
    Par Ziltoid dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/10/2007, 14h28
  2. [DW8] Début avec dreamweaver 8
    Par coralor dans le forum Dreamweaver
    Réponses: 1
    Dernier message: 17/07/2007, 10h13
  3. Début avec Netbeans 5.5
    Par Charly303 dans le forum NetBeans
    Réponses: 4
    Dernier message: 23/10/2006, 19h29
  4. Début avec BIRT : page affichée sans les data
    Par Darkrix dans le forum BIRT
    Réponses: 2
    Dernier message: 18/09/2006, 12h18
  5. Mes premiers débuts avec Dev-C++ : ca bloque !
    Par fab56 dans le forum Dev-C++
    Réponses: 6
    Dernier message: 20/02/2005, 17h24

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