这里用到两个函数:
- 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 , 效果如图:
FROM: http://blog.csdn.net/bcs_01/article/details/8906639