zoukankan      html  css  js  c++  java
  • Qt窗口分割器QSplitter类使用详解

    1、先看一下它的构造方法

    (1)QSplitter(QWidget *parent = Q_NULLPTR)
    (2)QSplitter(Qt::Orientation orientation, QWidget *parent = Q_NULLPTR)

    默认不传参数情况下调用(1),它的参数默认是Q_NULLPTR(相当于0),代表是主窗口,无父窗口。

    调用(2)的时候需要传递至少一个参数Qt::Orientation,这个参数通过Qt::Horizontal 和 Qt::Vertical来设定为水平分割或垂直分割。

    看一个例子:

    QSplitter *splitter = new QSplitter(parent);
          QListView *listview = new QListView;
          QTreeView *treeview = new QTreeView;
          QTextEdit *textedit = new QTextEdit;
          splitter->addWidget(listview);
          splitter->addWidget(treeview);
          splitter->addWidget(textedit);

    实例:

    来源于:https://blog.csdn.net/a649518776/article/details/6633857

    #include <QtGui/QApplication>
    
    #include "mainwindow.h"
    
    #include <QSplitter>
    
    #include <QTextCodec>
    
    #include <QTextEdit>
    
    int main(int argc, char *argv[])
    
    {
    
        QApplication a(argc, argv);
    
        //设置字体
    
        QFont font("ZYSong18030",12);
    
        a.setFont(font);
    
        QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
    
        //主splitter,以下填充text和子splitter
    
        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);
    
        //开始填充右边的splitter,放上两个text
    
        QTextEdit *textTop=new QTextEdit(QObject::tr("Right Top Widget"),splitterRight);
    
        textTop->setAlignment(Qt::AlignCenter);
    
        QTextEdit *textBottom=new QTextEdit(QObject::tr("Right Bottom Widget"),splitterRight);
    
        textBottom->setAlignment(Qt::AlignCenter);
    
        //设置主splitter
    
        splitterMain->setStretchFactor(1,1);
    
        splitterMain->setWindowTitle(QObject::tr("Splitter"));
    
        splitterMain->show();
    
        return a.exec();
    
    }

    解析:

    1.QSplitter的构造方法:

    QSplitter *splitterMain=new QSplitter(Qt::Horizontal,0);

    第一个参数通过Qt::Horizontal 和 Qt::Vertical来设定为水平分割或垂直分割。第二个设定0代表是主窗口,无父窗口。

    不过子splitter设置的

    new QSplitter(Qt::Vertical,splitterMain);

    代表主窗口是splitterMain。则子splitter就被添加到splitterMain中。

    添加时为从左至右(或从上至下)添加;

     

    2.添加QTextEdit控件。

    QTextEdit *textLeft=new QTextEdit(QObject::tr("Left Widget"),splitterMain);

    第一个参数设置文本内容,第二个参数设置主窗体。

     

    3.设置拖动时是否实时更新

    splitterRight->setOpaqueResize(false);

    false为不实时更新——在拖动时候只显示一条灰色的线条,在拖动到位并释放鼠标后再显示分割条。默认为true——实时更新。

    4.设定可伸缩控件:

    splitterMain->setStretchFactor(1,1);

    第一个参数代表控件序号,第一个序号为0.后面参数0代表不可伸缩,非0代表可伸缩。

    这里设置右边的可伸缩。当拉伸整个窗口时候,左边保持原来宽度。

    拉伸后,我们发现左边的宽度不变。

  • 相关阅读:
    黄聪:Wordpress写文章自动过滤HTML标签解决方法
    黄聪:C#中调用python脚本语言
    黄聪:DIV+CSS建站经验总结,不同版本IE下CSS布局bug问题(IE5、IE6、IE7、IE8、火狐Firefox兼容)
    黄聪:Python下安装Mysqldb出现DeprecationWarning: the sets module is deprecated from sets错误解决方案
    黄聪:Wordpress数据库中各个表的用途描述
    黄聪:Python实现Discuz论坛的自动POST登录发贴回帖(转)
    黄聪:python访问抓取网页常用命令(保存图片到本地、模拟POST、GET、中文编码问题)
    黄聪:jquery对ajax的error内的XMLHttpRequest返回的exception获取里面的信息
    黄聪:XML操作中常用的XPath表达式
    黄聪:Python初始化系统变量设置
  • 原文地址:https://www.cnblogs.com/kongbursi-2292702937/p/15044048.html
Copyright © 2011-2022 走看看