分割窗口QSplitter类

概述

分割窗口QSplitter类在应用程序中经常用到,它可以灵活分割窗口的布局,经常用在类似文件资源管理器的窗口设计中

在Qt开发中,QSplitter是比较常用到的,也就是分割窗口。并且窗口分割处也就是QSplitter的handle是可以随意拖动的。这样,每个窗口的大小就可以按照自己的需要进行调整。QSplitter可以容纳其他Widget,具有布局一样的特性,但是又可以动态调整,可以说是动态布局特性,其内部的Widget可以自由伸缩。

QSplitter有两种:垂直和水平。

 enum Orientation {
        Horizontal = 0x1,
        Vertical = 0x2
    };

代码

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

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QFont font("ZYSong18030",12);  //指定显示字体
    a.setFont(font);

    //主分割窗口
    //新建一个QSplitter类对象,作为主分割窗口,设定此分割窗口为水平分割窗口
    QSplitter *splitterMain=new QSplitter(Qt::Horizontal,0);
    //新建一个QTextEdit对象,并将其插入到主分割窗口中
    QTextEdit *textLeft=new QTextEdit(QObject::tr("Left Widget"),splitterMain);
    textLeft->setAlignment(Qt::AlignCenter);  //设置TextEdit中文字的对齐方式

    //右分割窗口
    QSplitter *splitterRight=new QSplitter(Qt::Vertical,splitterMain);
    //调用setOpaqueResize()方法用于设定分割窗口的分割条在拖拽时是否实时更新
    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);

    //调用setStretchFactor()方法用于设定可伸缩控件
    splitterMain->setStretchFactor(1,1);
    splitterMain->setWindowTitle(QObject::tr("Splitter"));
    splitterMain->show();

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

    return a.exec();
}

运行结果

参考资料

1 https://blog.csdn.net/u011417605/article/details/50914738

2 《Qt5开发及实例(第3版)》

原文地址:https://www.cnblogs.com/Manual-Linux/p/9314635.html

时间: 2024-10-14 07:11:47

分割窗口QSplitter类的相关文章

分割窗口QSplitter类---布局管理(一)

从今天开始Mayuyu要学习QT了,Mayuyu是一个很爱美的姑娘,所以为了能给设计出美观的图形界面,Mayuyu一定 会努力的! 今天Mayuyu要讲的是布局管理中的分割窗口类QSplitter,分割窗口,顾名思义就是把窗口分割成一个一个小块. 比如要实现一个简单的窗口,如下图: 这个窗体有3部分,那么写出如下代码: #include "widget.h" #include <QApplication> #include <QSplitter> #includ

【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"

MFC中使用CSplitterWnd分割窗口后设置视图大小的问题

开发环境:vs2010 在对框架窗口进行分割之后需要根据需求设置每个分割窗口的大小,但是在通过createView(...)设置大小时,往往起不到想要的结果,如下代码并不能将框架的窗口按照预设的大小来进行分割: 1 BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 2 { 3 // TODO: 在此添加专用代码和/或调用基类 4 //return CFrameWndEx::OnCreate

VC项目开发之单文档多视图实现-非分割窗口[转]

k_eckel:http://www.mscenter.edu.cn/blog/k_eckel 多视图是VC开发中经常要用到的技术之一,一般地实现单文档多视图有两种方式 1)通过视图分割的技术(使用CSplitterWnd实现),将窗口分割为多个部分,每个部分显示各自显示不同的视图,这种技术实现起来比较简单,并且相关的资料也很多. 2)通过一个文档关联多个视图,窗口显示整个视图. 第二种实现较第一种复杂,这里给出详细的实现方法. Step 1:使用VC 6.0新建一个Project,命名为:Mu

Qt布局与分割器QSplitter

Qt的布局方式主要有四种: QGridLayout         栅格布局 QFormLayout       表格布局 QHBoxLayout       水平布局 QVBoxLayout       垂直布局 然而,只通过以上四种布局的组合似乎不太好用, 因此需要搭配分割器QSplitter, 在QSplitter中实现局部布局,最后再放进主布局中可以实现非常好的效果. /* *********************************************************

静态分割窗口

 静态分割窗口 创建静态分割窗口的步骤为: 1. 在父框架类中定义一个CSplitterWnd类型的成员对象. 2. 重载父框架类的CFrameWnd::OnCreateClient成员函数. 3. 在重载的CFrameWnd::OnCreateClient函数中调用CSplitterWnd成员对象的CreateStatic成员函数,然后可以调用CSplitterWnd成员对象的CreateView成员函数为每个窗格创建视图.        实例:在主框架窗口中的客户区创建一个两行一列的静态分割

Tkinter类之窗口部件类

Tkinter类之窗口部件类 Tkinter支持15个核心的窗口部件,这个15个核心窗口部件类列表如下: 窗口部件及说明: Button:一个简单的按钮,用来执行一个命令或别的操作. Canvas:组织图形.这个部件可以用来绘制图表和图,创建图形编辑器,实现定制窗口部件. Checkbutton:代表一个变量,它有两个不同的值.点击这个按钮将会在这两个值间切换. Entry:文本输入域. Frame:一个容器窗口部件.帧可以有边框和背景,当创建一个应用程序或dialog(对话)版面时,帧被用来组

WPF自定义窗口基类

WPF自定义窗口基类时,窗口基类只定义.cs文件,xaml文件不定义.继承自定义窗口的类xaml文件的根节点就不再是<Window>,而是自定义窗口类名(若自定义窗口与继承者不在同一个命名空间,还得加上命名空间),继承自定义窗口类后台代码也得修改为继承自自定义窗口exp: //继承Window类的自定义窗口类 namespace WPF_Study.Entity { using System.Windows; public class WindowBase:Window { private c

Vim的分割窗口split命令

显示两个不同的文件:或者同时显示一个文件的两个不同地方:又或者并排比较两个文件.这一切都可以通过分割窗口实现. 打开新窗口最简单的命令如下: :split (水平分割) || :vsplit (垂直分割)这个命令把屏幕分解成两个窗口并把光标置于上面的窗口中. CTRL-W w 命令可以用于在窗口间跳转.如果你在上面的窗口,它会跳转到下面的窗口,如果你在下面的窗口,它会跳转到上面的窗口.(CTRL-W CTRL-W 可以完成相同的功能这是为了避免你有时按第二次的时候从 CTRL 键上缩手晚了.)