首页 > 代码库 > 【Qt5开发及实例】3、布局管理之分割窗口QSplitter

【Qt5开发及实例】3、布局管理之分割窗口QSplitter

首先看看目标效果


技术分享技术分享



代码:


#include "mainwindow.h"
#include <QApplication>
#include <QTextEdit>
#include <QSplitter>
#include <QTextCodec>

int main(int argc, char *argv[])
{
  QApplication a(argc, argv);

  QFont font("ZYSong18030", 12);
  a.setFont(font);  //设定字体的类型

  //主分割窗口
  //第二个设定0代表是主窗口,无父窗口
  QSplitter *splitterMain = new QSplitter(Qt::Horizontal, 0); //水平分割主窗口,这个吧主窗口分为平行的两个窗口




  //自动按从左到右的顺序修改
  QTextEdit *textLeft = new QTextEdit(QObject::tr("Left Widget"), splitterMain);  //新建的一个QTextEidt对象填入splitterMain里面
  textLeft->setAlignment(Qt::AlignCenter);  //文字居中放置  ,把左边的设置完了之后



  //右部分分割窗口
  //1,新创建一个分割加到主窗口上
  QSplitter *splitterRight = new QSplitter(Qt::Vertical, splitterMain);   //垂直分割
  splitterRight->setOpaqueResize(false);



  QTextEdit *textUp = new QTextEdit(QObject::tr("Top Widget"), splitterRight);
  textUp->setAlignment(Qt::AlignCenter);

  QTextEdit *textBottom = new QTextEdit(QObject::tr("Bottom Widget"), splitterRight);
  textBottom->setAlignment(Qt::AlignCenter);

  splitterMain->setStretchFactor(0, 0);
  splitterMain->setWindowTitle(QObject::tr("Splitter"));
  splitterMain->show();


  //这个是按程序的排序方向制动设定为第一个列或者行的

//  MainWindow w;
//  w.show();

  return a.exec();
}

我们可以做点小改动,使他变成这个样的,我们就更好理解QSplitter了

技术分享


代码:

#include "mainwindow.h"
#include <QApplication>
#include <QTextEdit>
#include <QSplitter>
#include <QTextCodec>

int main(int argc, char *argv[])
{
  QApplication a(argc, argv);

  QFont font("ZYSong18030", 12);
  a.setFont(font);  //设定字体的类型

  //主分割窗口
  //第二个设定0代表是主窗口,无父窗口
  QSplitter *splitterMain = new QSplitter(Qt::Horizontal, 0); //水平分割主窗口,这个吧主窗口分为平行的两个窗口



  QSplitter *splitterRight2 = new QSplitter(Qt::Vertical, splitterMain);   //垂直分割
  splitterRight2->setOpaqueResize(true);
  QTextEdit *textLeft0 = new QTextEdit(QObject::tr("Left Widget"), splitterRight2);  //新建的一个QTextEidt对象填入splitterMain里面
  textLeft0->setAlignment(Qt::AlignCenter);  //文字居中放置  ,把左边的设置完了之后

  QTextEdit *textLeft00 = new QTextEdit(QObject::tr("Left333 Widget"), splitterRight2);  //新建的一个QTextEidt对象填入splitterMain里面
  textLeft00->setAlignment(Qt::AlignCenter);  //文字居中放置  ,把左边的设置完了之后

  QTextEdit *textLeft000 = new QTextEdit(QObject::tr("Left333 Widget"), splitterRight2);  //新建的一个QTextEidt对象填入splitterMain里面
  textLeft000->setAlignment(Qt::AlignCenter);  //文字居中放置  ,把左边的设置完了之后


  //自动按从左到右的顺序修改
  QTextEdit *textLeft = new QTextEdit(QObject::tr("Left Widget"), splitterMain);  //新建的一个QTextEidt对象填入splitterMain里面
  textLeft->setAlignment(Qt::AlignCenter);  //文字居中放置  ,把左边的设置完了之后

  QTextEdit *textLeft22 = new QTextEdit(QObject::tr("Left22 Widget"), splitterMain);  //新建的一个QTextEidt对象填入splitterMain里面
  textLeft22->setAlignment(Qt::AlignCenter);  //文字居中放置  ,把左边的设置完了之后


  //右部分分割窗口
  //1,新创建一个分割加到主窗口上
  QSplitter *splitterRight = new QSplitter(Qt::Vertical, splitterMain);   //垂直分割
  splitterRight->setOpaqueResize(false);


  QTextEdit *textUp = new QTextEdit(QObject::tr("Top Widget"), splitterRight);
  textUp->setAlignment(Qt::AlignCenter);

  QTextEdit *textBottom = new QTextEdit(QObject::tr("Bottom Widget"), splitterRight);
  textBottom->setAlignment(Qt::AlignCenter);

  splitterMain->setStretchFactor(0, 0);
  splitterMain->setWindowTitle(QObject::tr("Splitter"));
  splitterMain->show();


  //这个是按程序的排序方向制动设定为第一个列或者行的

//  MainWindow w;
//  w.show();

  return a.exec();
}

这样大家就应该能明白他们之间的差别了吧!




【Qt5开发及实例】3、布局管理之分割窗口QSplitter