您可以考虑使用 aQGridLayout和调用QGridLayout::setColumnStrech来为相应的列分配优先级。您还可以使用 aQSpacerItem在小部件之间添加空间。
这是一些示例代码:
QGridLayout *gridLayout = new QGridLayout;
// Set the minimum widths for all three columns of the grid
gridLayout->setColumnMinimumWidth(0, 100);
gridLayout->setColumnMinimumWidth(1, 300);
gridLayout->setColumnMinimumWidth(2, 100);
// use width 100 to fill the first column
QSpacerItem *spacer = new QSpacerItem(100, 0);
QLabel *logo = new QLabel;
QButton *button = new QButton;
gridLayout->addWidget(spacer, 0, 0);
gridLayout->addWidget(logo, 0, 1);
gridLayout->addWidget(button, 0, 2);
另外,请参阅此问题的答案以获取更多信息:QGridLayout, 3 panes, not expand proper