Qt布局与分割器QSplitter

Posted 朝闻道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt布局与分割器QSplitter相关的知识,希望对你有一定的参考价值。

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

以上是关于Qt布局与分割器QSplitter的主要内容,如果未能解决你的问题,请参考以下文章

分割窗口QSplitter类

11.QT窗口布局切割

《Qt5 开发与实例(第三版)》学习笔记

QT QSplitter设置初始比例setStretchFactor失效解决

如何通过 qt 设计器创建 QSplitter ui 类?

qt 如何把qsplitter 添加到主窗口