Qt espace vide de la colonne dans QGridLayout?
J'ai le code suivant où je place un bouton et une zone de texte dans un QGridLayout
. Veuillez notez que j'utilise les colonnes 3 et 4 pour le placement de ces.
QGridLayout *insAddPanel = new QGridLayout();
{
QLineEdit* ledInstrumentName = new QLineEdit();
insAddPanel->addWidget(ledInstrumentName, 0, 3);
QPushButton* btnAddInstrument = new QPushButton();
btnAddInstrument->setText("Add");
insAddPanel->addWidget(btnAddInstrument, 0, 4);
}
mainLayout->addLayout(insAddPanel);
......
Cependant lorsque je l'exécute, j'obtiens quelque chose comme ceci:
Je voulais l'édition de texte et le bouton d'occuper seulement 2/5 de l'espace horizontal disponible. C'est pourquoi j'ai placé dans la 3e et la 4e colonne. Comme cela ne fonctionne pas, comment puis-je obtenir ce fait? Est là quelque chose comme un espace vide widget Qt? J'ai cherché mais ne trouve pas.
Vous devez vous connecter pour publier un commentaire.
Utilisation void QGridLayout::setColumnStretch ( int colonne, int stretch ).
Vous pouvez définir
stretch = 1
pour toutes les colonnes. Il donnera la vue que vous souhaitez.Utilisation QHBoxLayout, ajouter des entretoises, et de corriger les étirer facteurs.
QSpacerItem - est au sujet de votre question initiale.
Il y a aucune raison d'utiliser la grille de mise en page?
Vous pouvez utiliser
QGridLayout::setColumnMinumumWidth(int colonne, int minSize)
pour définir la largeur de la colonnecolumn
àminSize
pixels. Cela fonctionne aussi pour les colonnes vides. Dans votre cas, il vous faudrait faire quelque chose comme ceci:Changement
100
le nombre de pixels que vous souhaitez les colonnes de large.Aussi, si vous utilisez cette solution, vous n'avez pas besoin de trois colonnes, une colonne qui est très grand sera suffisant.
Il y a aussi un
setRowMinimumHeight
méthode qui fait la même chose pour les lignes.