这里用到两个函数:
void QGridLayout::setColumnStretch ( int column, int stretch )
void QGridLayout::setRowStretch ( int row, int stretch )
column表示列码,stretch表示伸缩因子。
PreferenceDialog::PreferenceDialog(QWidget *parent)
: QDialog(parent)
{
createAppearancePage();
createWebbrowserPage();
createMainAndNewsPage();
createAdvancedPage();
listWidget = new QListWidget;
listWidget->addItem(tr("Appearance"));
listWidget->addItem(tr("Web Browser"));
listWidget->addItem(tr("Mail & News"));
listWidget->addItem(tr("Advanced"));
stackedLayout = new QStackedLayout;
stackedLayout->addWidget(appearancePage);
stackedLayout->addWidget(webBrowserPage);
stackedLayout->addWidget(mailAndNewsPage);
stackedLayout->addWidget(advancedPage);
connect(listWidget, SIGNAL(currentRowChanged(int)),
stackedLayout, SLOT(setCurrentIndex(int)));
buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok
| QDialogButtonBox::Cancel);
QGridLayout *mainLayout = new QGridLayout;
mainLayout->setColumnStretch(0, 1);
mainLayout->setColumnStretch(1, 3);
mainLayout->addWidget(listWidget, 0, 0);
mainLayout->addLayout(stackedLayout, 0, 1);
mainLayout->addWidget(buttonBox, 1, 0, 1, 2);
setLayout(mainLayout);
connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
setWindowTitle(tr("Preferences"));
listWidget->setCurrentRow(0);
}
其中 mainLayout->setColumnStretch(0, 1);
mainLayout->setColumnStretch(1, 3);
两句把第0列和第1列的比例设置成1:3 , 效果如图: