QSplitter分割窗口

来源:互联网 发布:数组的特点 编辑:程序博客网 时间:2024/05/29 21:28


分割窗口在很多应用程序中用到,例如以下的界面设计。



接下来使用代码实现。

1.建立项目时基类选择QMainWindow,取消创建界面复选框的选中状态。

2.在main.cpp中编写如下代码:

#include "Splitter.h"#include <Qsplitter>#include <QTextEdit>#include <QApplication>int main(int argc, char *argv[]){    QApplication a(argc, argv);    // 设置字体    QFont font("ZYSong18030",12);    a.setFont(font);    // 主分割窗口    QSplitter *Splitter_Left = new QSplitter(Qt::Horizontal,0);    // Qt::Horizontal代表水平分割,0代表没有父窗口    QTextEdit *TextEdit_Left = new QTextEdit(QObject::tr("Left Widget"), Splitter_Left);    // 设置文本内容为"Left Widget",设置主窗体为Splitter_Left    TextEdit_Left->setAlignment(Qt::AlignCenter);    // 设置为居中对齐    // 右部分分割窗口    QSplitter *Splitter_Right = new QSplitter(Qt::Vertical,Splitter_Left);    // 垂直分割,设置主窗口为Splitter_Left    Splitter_Right->setOpaqueResize(true);    // 实时更新    // 右上分割窗口    QTextEdit *TextEdit_Up =new QTextEdit(QObject::tr("Top Widget"), Splitter_Right);    // 设置文本内容为"Top Widget",设置主窗体为Splitter_Right    TextEdit_Up->setAlignment(Qt::AlignCenter);    // 居中对齐    // 右下分割窗口    QTextEdit *TextEdit_Down =new QTextEdit(QObject::tr("Down Widget"), Splitter_Right);    // 设置文本内容为"Down Widget",设置主窗体为Splitter_Right    TextEdit_Down->setAlignment(Qt::AlignCenter);    // 居中对齐    Splitter_Left->setStretchFactor(1,1);    // 第一个参数代表控件序号,第二个参数代表是否可伸缩    Splitter_Left->setWindowTitle(QObject::tr("Splitter"));    // 设置标题    Splitter_Left->show();    // 显示    return a.exec();}
——————————————————————————————————————————————————————————————————


解析:


1.QSplitter的构造方法:


   QSplitter *Splitter_Left = new QSplitter(Qt::Horizontal,0);


  第一个参数通过 Qt::HorizontalQt::Vertical来设定为水平分割或垂直分割。第二个设定0代表是主窗口,无父窗口。
  而 Splitter_Right 设置的 QSplitter *Splitter_Right newQSplitter(Qt::Vertical,Splitter_Left) 代表主窗口是Splitter_Left。则Splitter_Right 就被添加到 Splitter_Left中。添加时为从左至右(或从上至下)添加。

2.添加QTextEdit控件:


   QTextEdit *TextEdit_Left = new QTextEdit(QObject::tr("Left Widget"), Splitter_Left);


第一个参数设置文本内容,第二个参数设置主窗口。




3.设置拖动是否实时更新:


   Splitter_Right->setOpaqueResize(true);

 

默认为true,实时更新。false为不实时更新,拖动分割条时只显示一条透明的线条,在拖动到位并释放鼠标后再显示分割条。







4.设定可伸缩控件:



   Splitter_Left->setStretchFactor(1,1);

   

第一个参数代表控件序号,第一个序号为0.后面参数0代表不可伸缩,非0代表可伸缩。这里设置右边的可伸缩。当拉伸整个窗口时候,左边保持原来宽度。



0 0
原创粉丝点击