您的位置:首页 > 编程语言 > Qt开发

Qt学习:Qt中QGridLayout按比例设定布局

2013-05-09 17:09 295 查看
这里用到两个函数:

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 , 效果如图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: