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

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

2014-12-19 22:15 597 查看
首先看看目标效果





代码:

#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();
}


这样大家就应该能明白他们之间的差别了吧!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: