Ajouter des widgets à un ScrollArea
Je suis la création d'une fenêtre dimanica à la liste de téléchargements.
Mais la barre de défilement ne fonctionne pas et les "widgets enfants" sont "coupées".
Où puis-je tort? Merci.
Source:
QWidget *central = new QWidget;
QScrollArea *scroll = new QScrollArea;
QVBoxLayout *layout = new QVBoxLayout(scroll);
scroll->setWidget(central);
scroll->setWidgetResizable(true);
int i=0;
while(i<10){
QWidget *p1 = new QWidget;
QHBoxLayout *hl = new QHBoxLayout(p1);
QLabel *label1 = new QLabel("test");
QLabel *label2 = new QLabel("0%");
hl->addWidget(label1);
hl->addWidget(label2);
layout->addWidget(p1);
i++;
}
QMainWindow *w = new QMainWindow;
w->setGeometry(50,50,480,320);
w->setCentralWidget(scroll);
w->show();
- Il semble que vous essayez de faire une liste. Peut-être avoir un coup d'oeil à
QListWidget
ou laQListView
etQAbstractListModel
duo?
InformationsquelleAutor Guilherme Nascimento | 2013-05-28
Vous devez vous connecter pour publier un commentaire.
Trouvé votre erreur, vous devez définir
layout
de widgetcentral
de ne passcroll
:ÉDITÉ:
Vos étiquettes déjà prendre tout l'espace disponible, si vous avez remarqué,
label1
commence à la bordure gauche se termine dans le milieu, oùlabel2
commence et se termine à la droite de la bordure. Si je vous ai bien compris, vous voulezlabel1
prendre tout l'espace disponible, tout enlabel2
avec des % à ne prendre que ce besoin d'espace, pas plus?Lire sur
QSizePolicy
de la classe et de l'utilisationsetSizePolicy()
sur vos étiquettes. Essayez d'insérer cette ligne juste après label2 déclaration:Et ajouter la ligne
layout->addStretch();
juste avantQMainWindow *w = new QMainWindow;
while(i<10)
parwhile(i<3)
vous verrez le problème. Capture d'écran: i.stack.imgur.com/CRVhq.pnglayout->addStretch();
avantQMainWindow *w = new QMainWindow;