QSplitter(分离部件)

QSplitter(分离部件)QSplitterTheQSplitterclassimplementsasplitterwidget.Asplitterletstheusercontrolthesizeofchildwidgetsbydraggingtheboundarybetweenthem.Anynumberofwidgetsmaybecontrolled…

大家好,又见面了,我是你们的朋友全栈君。

QSplitter

The QSplitter class implements a splitter widget.
A splitter lets the user control the size of child widgets by dragging the boundary between them. Any number of widgets may be controlled by a single splitter. The typical use of a QSplitter is to create several widgets and add them using insertWidget() or addWidget().

QSplitter类实现了一个分离小部件。
splitter允许用户通过拖动子部件之间的边界来控制它们的大小。
任何数量的小部件都可以由单个拆分器控制。QSplitter的典型用法是创建几个小部件并使用
insertWidget()addWidget()添加它们。

看一个例子

这里写图片描述

this->setWindowTitle("码农小明--QSplitter");

    QSplitter* splitter = new QSplitter(this);
    splitter->setFixedSize(500,500);

    QTextEdit* textEdit1 = new QTextEdit();
    QTextEdit* textEdit2 = new QTextEdit();
    QTextEdit* textEdit3 = new QTextEdit();

    splitter->addWidget(textEdit1);
    splitter->addWidget(textEdit2);
    splitter->addWidget(textEdit3);

    textEdit1->setText("Edit1");
    textEdit1->setAlignment(Qt::AlignCenter);

    textEdit2->setText("Edit2");
    textEdit2->setAlignment(Qt::AlignCenter);

    textEdit3->setText("Edit3");
    textEdit3->setAlignment(Qt::AlignCenter);


    this->setFixedSize(500,500);
If a widget is already inside a QSplitter when insertWidget() or addWidget() is called,
it will move to the new position. This can be used to reorder widgets in the splitter later. 
You can use indexOf(), widget(), and count() to get access to the widgets inside the splitter.

如果在调用insertWidget()或addWidget()时,一个小部件已经在QSplitter中,那么它将移动到新的位置。
这可以用于稍后在拆分器中重新排序小部件。您可以使用indexOf()、widget()和count()来访问splitter中的小部件。
qDebug()<<"splitter->count:"<<splitter->count();

这里写图片描述

QSplitter 把 widget 横向的分为 3个widget (默认方向为 横向)

A default QSplitter lays out its children horizontally (side by side); 
you can use setOrientation(Qt::Vertical) to lay its children out vertically.

默认的QSplitter水平地(并排地)布局它的子组件;
你可以使用setOrientation(Qt::Vertical)功能将其子机器人垂直放置。
splitter->setOrientation(Qt::Vertical);//设置方向为垂直

这里写图片描述

QSplitter resizes its children dynamically by default. 
If you would rather have QSplitter resize the children only at the end of a resize operation, 
call setOpaqueResize(false).

默认情况下,QSplitter会动态调整其子元素的大小。如果您希望QSplitter仅在调整大小操作结束时调整子元素的大小,
那么调用setOpaqueResize(false)

默认的true

splitter->setOpaqueResize(true);//默认的true

效果:
这里写图片描述

splitter->setOpaqueResize(false);

效果:
这里写图片描述

区别很明显就是 能不能实时的预览到 拖拽时的画面
The initial distribution of size between the widgets is determined by multiplying
the initial size with the stretch factor. 
The function sizes() returns the sizes set by the user. 
Alternatively, you can save and restore the sizes of the widgets from a 
QByteArray using saveState() and restoreState() respectively.

小部件之间大小的初始分布是通过将初始大小与伸缩因子相乘确定的。
您还可以使用setsize()来设置所有小部件的大小
。函数size()返回用户设置的大小。
或者,您可以分别使用saveState()和restoreState()从QByteArray中保存和恢复小部件的大小。

看一下 void QSplitter::setSizes(const QList<int> &list)

Sets the child widgets' respective sizes to the values given in the list.
If the splitter is horizontal, the values set the width of each widget in pixels,
from left to right. If the splitter is vertical, the height of each widget is set, 
from top to bottom.

将子部件的各自大小设置为列表中给定的值。
如果splitter是水平的,则这些值将以像素为单位设置每个小部件的宽度,从左到右。
如果splitter是垂直的,则从上到下设置每个小部件的高度
    QList<int> list;
    list<<50<<100<<200;//width 为 50 100 200 splitter->setSizes(list);

这里写图片描述

注意:

Note: Adding a QLayout to a QSplitter is not supported (either through setLayout() or
making the QSplitter a parent of the QLayout); use addWidget() instead (see example above).

不支持向QSplitter添加QLayout(通过setLayout()或将QSplitter作为QLayout的父元素);
使用addWidget()代替(参见上面的例子)。

这里写图片描述

    this->setWindowTitle("码农小明--QSplitter");

    QSplitter* splitter = new QSplitter(this);
    splitter->setFixedSize(500,500);

    QTextEdit* textEdit1 = new QTextEdit();
    QTextEdit* textEdit2 = new QTextEdit();
    QTextEdit* textEdit3 = new QTextEdit();
    QTextEdit* textEdit4 = new QTextEdit();


    splitter->addWidget(textEdit1);


    textEdit1->setText("Main-Left");
    textEdit1->setAlignment(Qt::AlignCenter);

    textEdit2->setText("Right-Top");
    textEdit2->setAlignment(Qt::AlignCenter);

    QSplitter* splitter2 = new QSplitter(splitter);
    splitter2->setOrientation(Qt::Vertical);

    splitter2->addWidget(textEdit2);

    textEdit3->setText("Right-Bottom-left");
    textEdit3->setAlignment(Qt::AlignCenter);

    textEdit4->setText("Right-Bottom-right");
    textEdit4->setAlignment(Qt::AlignCenter);

    QSplitter* splitter3 = new QSplitter(splitter2);

    splitter3->addWidget(textEdit3);
    splitter3->addWidget(textEdit4);


    this->setFixedSize(500,500);
        98年菜鸡一枚,请大佬们多多关照!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125083.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【Shader】Shader官方示例[通俗易懂]

    官方示例原文地址:https://docs.unity3d.com/Manual/SL-SurfaceShaderExamples.htmlSurfaceShader示例在表面着色器。此页面上的示例显示如何使用内置照明模型。有关如何实现自定义光照模型的示例,请参阅SurfaceShader光照示例。简单着色器例我们将从一个非常简单的Shader开始,并在此基础上进行构建。这是一个将…

    2022年4月15日
    54
  • 如何线上推广引流?百度知道实现精准引流

    如何线上推广引流?百度知道实现精准引流百度如何做推广精准吸粉的,百度知道的4个精准吸粉技巧!众所周知,百度是全球最大的中文搜索引擎,百度一下你就知道,这是我们非常熟悉的广告词之一。因为它的流量非常大,所以很多人都在那里努力分流。但是一部分人吸粉的效果不太好。为什么呢?因为流量的准确性不够!百度的百度知道是一个精准的流量池,这样我们就可以正确地把流量流到自己的平台上。你知道百度是如何引流的吗?今天,兴棋就给大家分享一下它的玩法,希望对大家有所帮助!一、做百度知道引流的两大优点!1、是能够带来直接的流量,如果你回答的问题能够带上链接,那

    2022年5月23日
    131
  • ios长按不能粘贴_ios14长按不能复制

    ios长按不能粘贴_ios14长按不能复制/*设置IOS页面长按不可复制粘贴,但是IOS上出现input、textarea不能输入,因此将使用-webkit-user-select:auto;*/*{-webkit-touch-callout:none;/*系统默认菜单被禁用*/-webkit-user-select:none;/*webkit浏览器*/-khtml-user-select:none;…

    2022年9月29日
    2
  • 基于时间的反向传播算法BPTT(Backpropagation through time)[通俗易懂]

    基于时间的反向传播算法BPTT(Backpropagation through time)[通俗易懂]本文介绍BPTT的原理和实现,是读“RecurrentNeuralNetworksTutorial,Part3–BackpropagationThroughTimeandVanishingGradients”的读书笔记,代码也来自于这篇文章,加了部分注释。

    2022年6月23日
    27
  • css+div网页设计(一)–基础知识

    css+div网页设计(一)–基础知识

    2021年12月10日
    52
  • 线程池参数如何设置?

    线程池参数如何设置?前言着计算机行业的飞速发展,摩尔定律逐渐失效,多核CPU成为主流。使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器。J.U.C提供的线程池:ThreadPoolExecutor类,帮助开发人员管理线程并方便地执行并行任务。了解并合理使用线程池,是一个开发人员必修的基本功。线程池参数配置方案显得十分重要。一、参数设置的传统方案1.线程池中执行的任务性质。计算密集型的任务比较占cpu,所以一般线程数设置的大小等于或者略微大于cpu的核数;但IO型任务主要时间消耗在IO等待上,cpu压

    2022年5月31日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号