QGridLayout, 3 panneaux, ne se développe pas correctement

Je suis en train d'ouvrir une fenêtre (tous dans le code) avec un QGridLayout. Je peux ajouter des widgets à la mise en page et qu'ils apparaissent dans ma fenêtre, mais je ne peux pas comprendre comment les redimensionner correctement. Voici ce que j'aimerais

[Leftmost][--------Center---------][Rightmost]

Ceux sont les 3 volets de ma fenêtre (tous les trois listes). La gauche et la droite doivent être d'une largeur statique et embrasser leurs côtés respectifs, et le centre doit se développer pour remplir la largeur de la fenêtre grandit ou rétrécit).

Code:

//Create the subviews, add them to a grid layout, and set the layout to the window.
QTableView *list = new QTableView(0);
list->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
QTableView *flashList = new QTableView(0);
flashList->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);

QPushButton *infoButton = new QPushButton("Info!");
QPushButton *flashFeedsButton = new QPushButton("Flashfeeds");

QGridLayout *gridLayout = new QGridLayout;



//Set the minimum widths for all three columns of the grid
gridLayout->setColumnMinimumWidth(GridColumnFirst, 300);
gridLayout->setColumnMinimumWidth(GridColumnSecond, 300);
gridLayout->setColumnMinimumWidth(GridColumnThird, 300);

//Set the minimum heights for all rows of the grid
int headerFooterHeight = 44;
gridLayout->setRowMinimumHeight(GridRowFirst, headerFooterHeight);
gridLayout->setRowMinimumHeight(GridRowSecond, 200);
gridLayout->setRowMinimumHeight(GridRowThird, headerFooterHeight);


//Set the stretch factors
gridLayout->setColumnStretch(GridColumnFirst, 1);
gridLayout->setColumnStretch(GridColumnFirst, 2);
gridLayout->setColumnStretch(GridColumnThird, 1);

gridLayout->addWidget(list, 1, 0, Qt::AlignLeft);
gridLayout->addWidget(flashList, 1, 1, Qt::AlignCenter);
gridLayout->addWidget(infoButton, 0, 3, Qt::AlignRight);
gridLayout->addWidget(flashFeedsButton, 0, 1, Qt::AlignLeft);

_mainWindow->setLayout(gridLayout);

(Comme vous pourriez être en mesure de dire, cela va finalement être une grille de 9x9, mais le point reste, j'essaie d'obtenir mon rangée du milieu (GridRowSecond) pour avoir l'élastique colonnes).

Les lignes elles-mêmes élargir l'amende juste. Le problème semble être les widgets à chaque cellule de l'étendre à prendre leur contenant d'espace. Comment dois-je faire? (aussi, à la verticale, ma liste est en pleine expansion correctement, mais pas horizontalement).

InformationsquelleAutor jbrennan | 2011-10-13