C++版QT:分割窗口

目录

mainwindow.h

mainwindow.cpp

main.cpp


Qt的分割窗口功能允许用户将一个窗口分割成多个区域,每个区域可以独立地显示不同的内容。这种功能在许多应用程序中非常有用,例如编辑器、浏览器和IDE等。

C++版QT:分割窗口_第1张图片

理解Qt的分割窗口,需要从以下几个方面入手:

窗口布局:在Qt中,窗口通常由一个主窗口(QWidget)和其子部件(widgets)组成。分割窗口就是将这个主窗口分割成多个子窗口(通常也是QWidget),每个子窗口可以独立地移动、调整大小和显示内容。

分割器(Splitter):Qt提供了一个特殊的部件叫做QSplitter,用于实现窗口的分割。QSplitter可以包含多个子部件,并且可以根据需要进行拖动和调整大小,从而实现窗口的动态分割。

使用方式:要使用QSplitter,首先需要创建一个QSplitter对象,然后添加要分割的子部件。这些子部件可以是任何QWidget的实例,例如QLabel、QTextEdit、QTableWidget等。

布局管理:与普通的QWidget一样,QSplitter也需要进行布局管理。可以使用布局管理器(如QVBoxLayout或QHBoxLayout)来控制QSplitter的位置和大小。

事件处理:由于分割窗口涉及到用户的交互操作(如拖动分割线),因此需要处理一些特殊的事件,如鼠标事件和大小调整事件。可以通过重写QWidget的事件处理函数(如mousePressEvent、resizeEvent等)来实现这些功能。

动态调整:QSplitter的一个重要特性是它可以动态调整子部件的大小。这意味着用户可以通过拖动分割线来改变各个子窗口的大小,从而实现灵活的界面布局。

下面是一个分割窗口的案例:

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
​
#include 
​
class MainWindow : public QMainWindow
{
    Q_OBJECT
​
public:
    MainWindow(QWidget* parent = 0);
    ~MainWindow();
};
​
#endif // MAINWINDOW_H
​

mainwindow.cpp

#include "mainwindow.h"
​
MainWindow::MainWindow(QWidget* parent)
    : QMainWindow(parent)
{
}
​
MainWindow::~MainWindow()
{
​
}
​

main.cpp

#include "mainwindow.h"
#include 
#include
#include
#include 
​
int main(int argc, char* argv[])
{
    QApplication a(argc, argv);
    QFont font("ZYSong18030", 12);
    a.setFont(font);
    //主分割窗口
    QSplitter* splitterMain = new QSplitter(Qt::Horizontal, 0);
    QTextEdit* textLeft = new QTextEdit(QObject::tr("Left Widget"), splitterMain);
    textLeft->setAlignment(Qt::AlignCenter);
    //右部分割窗口
    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(1, 1);
    splitterMain->setWindowTitle(QObject::tr("Splitter"));
    splitterMain->show();
​
    //MainWindow w;
    //w.show();
​
    return a.exec();
}
​

C++版QT:分割窗口_第2张图片

你可能感兴趣的:(C++学习与记录,c++,qt,分割窗口)