Bienvenue sur le forum !

Si vous souhaitez rejoindre la communauté, cliquez sur l'un de ces boutons !

Qt 5 : 5.7.1 - Qt Creator : 4.2.0 - Qt Installer : 2.0.3 - JOM : 1.1.2 - Qt Build suite : 1.7.0 - VS Qt 5 : 2.0.0

[Qt4] QScrollArea sans barre...

Bonjour,

Je travaille à un programme de gestion d'une compétition, j'ai donc une grille comme celle-ci.

image

J'ai mis un peu de couleur pour qu'on voie un peu mieux ce qui est inclus dans quoi, sachant qu'il y aura par la suite d'autres éléments, ce qui explique notamment le QGridLayout.

Le problème est visible ici : mon QWidget qui contient ma grille est très grand, mais la QScrollArea coupe le QWidget qui contient la grille sans pour autant me donner de barre de défilement.

Voici quelques bouts de mon code qui peuvent peut-être servir :

Le QScrollArea qui contient tout
Categorie::Categorie()
{

GrilleLayoutCate = new QGridLayout;

GrilleCate = new Grille;

GrilleLayoutCate->addWidget(GrilleCate,0,0,Qt::AlignTop);

setLayout(GrilleLayoutCate);


// setWidgetResizable(true);
// setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);

}
A ce niveau, j'ai essayé le setWidgetResizable() à true et à false, avec et sans le setVerticalScrollBarPolicy(), ça ne change rien.

Le QWidget qui contient la grille affichée
Grille::Grille(QWidget *parent)
{
LayoutGeneral = new QGridLayout(this);
setLayout(LayoutGeneral);

}

void Grille::GenererGrille(Table_Combattants* Table)
{
int i,j;
nbCombattants = Table->rowCount();
CalculeNbTours();

for(i=0;i<nb_tours;i++)
{
QVBoxLayout* layout = new QVBoxLayout;

for(j=0;j< (int) pow(2,i);j++)
{
QCombattant* CbtTest = new QCombattant("test",i,j);
layout->addWidget(CbtTest);
}

LayoutGeneral->addLayout(layout,0,nb_tours-i);


}

//je fixe la hauteur de la grille en faisant 50px * nb de cases à gauche de la grille
setFixedSize(LayoutGeneral->sizeHint().width(),50*((int) pow(2,nb_tours-1)));
}
NB : j'ai mis le code GenererGrille(), mais l'appel n'est pas présent dans ce que je vous donne vu que c'est du simplifié.


Merci pour votre aide !

Réponses

  • December 2008 modifié
    Salut !

    Comme tu l'as écris, la grille n'a aucun lien avec la scrollArea
    Essaye de la donner en parent au moment de la déclaration :
    GrilleCate = new Grille(Nom de l'objet parent);
  • December 2008 modifié
    J'ai modifié ainsi :
    GrilleCate = new Grille(this);
    Mais aucun changement... J'ai essayé d'autres choses comme mettre Categorie (rouge) en QWidget, et GrilleCate (vert) en QScrollArea, puis de rajouter un QWidget que contient GrilleCate, mais le problème reste le même : pas de scrollbar.
  • Salut !

    J'avais oublié désolé....

    Et un petit setWidget()

    Cordialement
  • December 2008 modifié
    Super, j'ai plus qu'à régler les problèmes de dimensions maintenant. Cela dit, je pensais que le setLayout marchait pareil que le setWidget...
    En tous les cas, merci !
Connectez-vous ou Inscrivez-vous pour répondre.