- QT中五中布局继承图如下:
2. 程序如下图所示
3. 主要源代码如下:
qzzsplitter.h文件源码: #ifndef QZZSPLITTER_H
#define QZZSPLITTER_H
#include <QSplitter>
class QZZSplitter : public QSplitter
{
Q_OBJECT
public:
QZZSplitter(QWidget *parent = nullptr);
QZZSplitter(Qt::Orientation orientation, QWidget *parent = nullptr);
};
#endif // QZZSPLITTER_H
qzzsplitter.cpp文件源码: #include "qzzsplitter.h"
QZZSplitter::QZZSplitter(QWidget *parent)
: QSplitter(parent)
{}
QZZSplitter::QZZSplitter(Qt::Orientation orientation, QWidget *parent)
:QSplitter(orientation, parent)
{}
mainwindows.h文件源码:
#include <QHBoxLayout>
#include <QTextEdit>
#include "qzzsplitter.h"
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
private:
QZZSplitter *m_pMainSplitter;
QZZSplitter *m_pRightSplitter;
QHBoxLayout *m_pMainLayout;
QTextEdit *pMainEdit;
QTextEdit *pMainEdit1;
QTextEdit *pMainEdit2;
};
#endif // MAINWINDOW_H
mainwindow.cpp文件源码:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_pMainSplitter = new QZZSplitter(Qt::Horizontal);
pMainEdit = new QTextEdit(tr("我是左边窗口"), m_pMainSplitter);
m_pRightSplitter = new QZZSplitter(Qt::Vertical, m_pMainSplitter);
pMainEdit1 = new QTextEdit(tr("我是右边上层窗口"), m_pRightSplitter);
pMainEdit2 = new QTextEdit(tr("我是右边底层窗口"), m_pRightSplitter);
m_pMainSplitter->setStretchFactor(1, 1);
m_pMainLayout = new QHBoxLayout();
m_pMainLayout->addWidget(m_pMainSplitter);
this->centralWidget()->setLayout(m_pMainLayout); //在MainWindow 窗口中需要调用这样调用来设置
}
MainWindow::~MainWindow()
{
delete ui;
}
main.cpp文件源码:
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}