3.1 分割窗口类-QSplitter

3.1 分割窗口类QSplitter
我们有时候会对单个窗口进行一些切割操作(比如想把它切割为多个子窗口),这个时候就需要借助QSplitter这个类来实现
QSplitter(
Qt::Orientation orientation,//指定了窗口的分割方式(水平分割还是垂直分割)
QWidget *parent = nullptr//父窗口的指针
)
QSplitter(QWidget *parent = nullptr)
virtual ~QSplitter()
3.1.1 QSplitter类的使用

  3.1.1.0 本案例运行效果如图

  

  3.1.1.2 我们首先需要知道这个窗口的结构是什么样子的,窗口对象之间的父子关系是什么样子的

  3.1.1.1 新建Qt Widget Application项目,项目名称为SplitterDemo,类名为SplitterWidget,取消创建UI界面的勾选

  3.1.1.2 在splitterwidget.h中写入以下代码

#ifndef SPLITTERWIDGET_H
#define SPLITTERWIDGET_H
#include<QMainWindow>
#include<QSplitter>
#include<QTextEdit>
class SplitterWidget : public QMainWindow
{
    Q_OBJECT
public:
    SplitterWidget(QWidget *parent = nullptr);
    ~SplitterWidget();
private:
    QSplitter*m_mainSplitter;//主分割窗口(负责将leftSplitter和rightSplitter分割为左右结构)
    QSplitter*m_leftSplitter;//左分割窗口(负责将左边的上下两个TextEdit进行垂直分割)
    QSplitter*m_rightSplitter;//右分割窗口(负责将右边的上下两个TextEdit进行垂直分割)
private:
    //左边分割窗口的两个子窗口(这实际上就是两个TextEdit)
    QTextEdit*m_leftTopTextEdit;//左上角的TextEdit
    QTextEdit*m_leftBottomEdit;//左下角的TextEdit
    //右边分割窗口的两个子窗口(这实际上就是两个TextEdit)
    QTextEdit*m_rightTopTextEdit;//右上角的TextEdit
    QTextEdit*m_rightBottomTextEdit;//右下角的TextEdit
};
#endif // SPLITTERWIDGET_H

  3.1.1.3 在splitterwidget.cpp中写入以下代码

#include "splitterwidget.h"

SplitterWidget::SplitterWidget(QWidget *parent):QMainWindow(parent)
{
    this->m_mainSplitter = new QSplitter(Qt::Orientation::Horizontal,this);
    this->m_mainSplitter->resize(800,400);

    this->m_leftSplitter = new QSplitter(Qt::Orientation::Vertical,this->m_mainSplitter);
    this->m_leftTopTextEdit = new QTextEdit(QString("左上角分割窗口"),this->m_leftSplitter);
    this->m_leftTopTextEdit->setAlignment(Qt::AlignCenter);
    this->m_leftBottomEdit =  new QTextEdit(QString("左下角分割窗口"),this->m_leftSplitter);
    this->m_leftBottomEdit->setAlignment(Qt::AlignCenter);

    this->m_rightSplitter = new QSplitter(Qt::Orientation::Vertical,this->m_mainSplitter);
    this->m_rightTopTextEdit = new QTextEdit(QString("右上角分割窗口"),this->m_rightSplitter);
    this->m_rightTopTextEdit->setAlignment(Qt::AlignCenter);
    this->m_rightBottomTextEdit = new QTextEdit(QString("右下角分割窗口"),this->m_rightSplitter);
    this->m_rightBottomTextEdit->setAlignment(Qt::AlignCenter);
}

SplitterWidget::~SplitterWidget()
{
}

  本小结的案例代码:https://files-cdn.cnblogs.com/files/blogs/792763/SplitterDemo.zip?t=1696778385&download=true

posted @ 2023-10-08 23:18  蜡笔小新Pointer  阅读(290)  评论(0)    收藏  举报