Qt的布局方式主要有四種:
QGridLayout 柵格布局
QFormLayout 表格布局
QHBoxLayout 水平布局
QVBoxLayout 垂直布局
然而,只通過以上四種布局的組合似乎不太好用, 因此需要搭配分割器QSplitter, 在QSplitter中實現局部布局,最后再放進主布局中可以實現非常好的效果.
/* ****************************************************************** * 函數名稱 : initLayout * 函數功能 : 初始化窗口布局 * 函數參數 : 無 * 返回值 : 無 ****************************************************************** */ void QFriendManager::initLayout() { //創建主布局VBoxLayout QVBoxLayout *mainLayout = new QVBoxLayout(); //創建主Splitter QSplitter *splitterMain = new QSplitter(Qt::Vertical, this); //添加標題標簽和表格部件到主Splitter tableWidget = new QTableWidget(splitterMain); tableWidget->setMinimumHeight(120); //創建底部工具欄Splitter,父親為主Splitter QSplitter *splitterBottom = new QSplitter(Qt::Horizontal, splitterMain); check_selectAll = new QCheckBox(QObject::tr("全選"), splitterBottom); pb_delete = new QPushButton(QObject::tr("刪除"), splitterBottom); pb_find = new QPushButton(QObject::tr("查找"), splitterBottom); le_find = new QLineEdit(splitterBottom); check_selectAll->setFixedSize(48, 32); pb_delete->setFixedSize(48, 32); pb_find ->setFixedSize(48, 32); //禁用Splitter拉伸效果 splitterMain->handle(1)->setDisabled(true); splitterBottom->handle(1)->setDisabled(true); splitterBottom->handle(2)->setDisabled(true); splitterBottom->handle(3)->setDisabled(true); //設置窗口邊沿寬度 mainLayout->setContentsMargins(2,5,2,5); //添加主Splitter到主布局VBoxLayout mainLayout->addWidget(splitterMain, 0); this->setLayout(mainLayout); }
|
http://blog.csdn.net/jan5_reyn/article/details/38955709