QSplitter文档翻译中文版

官方文档5.9版本:

详细描述

QSplitter类实现了一个分割窗口。

一个分束器让用户控制通过拖拽子窗口之间的边界控制它们的尺寸。任何数量的窗口都可以通过单条分束器被控制。典型的用法是创建多个窗口并用inserWidget()或者addwidget()方法添加它们。

下面的示例将并排显示QListView、QTreeView和QTextEdit,并带有两个拆分器句柄

      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);

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

默认的QSplitter水平地(并排地)放置它的子对象;你可以使用setOrientation(Qt::Vertical)来垂直布局它的子元素。

默认情况下,所有小部件都可以根据用户的需要大小,在小部件的minimumSizeHint()(或minimumSize())和maximumSize()之间。

默认情况下,QSplitter动态调整其子节点的大小。如果希望QSplitter只在调整大小操作结束时才调整子对象的大小,请调用setOpaqueResize(false)。

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

当您隐藏()一个孩子时,它的空间将分配给其他孩子。当再次显示()时,它将恢复。

注意:不支持向QSplitter添加QLayout(通过setLayout()或将QSplitter作为QLayout的父节点);而是使用addWidget()(参见上面的示例)。

属性

childrenCollapsible : bool

此属性保存用户是否可以将子小部件的大小调整为0

默认情况下,子窗口是可折叠的。可以使用setCollapsible()来启用和禁用各个子元素的折叠。

handleWidth : int

此属性保存拆分器句柄的宽度

默认情况下,此属性包含一个取决于用户平台和样式首选项的值。

如果将handleWidth设置为1或0,实际的抓取区域将会增长,使其各自小部件的几个像素重叠。

opaqueResize : bool

此属性用于确定调整大小是否不透明

默认的调整大小行为依赖于样式(由SH_Splitter_OpaqueResize样式提示决定)。但是,您可以通过调用setOpaqueResize()来覆盖它

orientation : Qt::Orientation

此属性保存拆分器的方向

默认情况下,方向是水平的。,这些小部件是并排摆放的)。可能的方向是 Qt::Horizontal和 Qt::Vertical。

成员函数文档

QSplitter::QSplitter(QWidget *parent = Q_NULLPTR)

使用传递给QFrame构造函数的父参数构造一个水平拆分器。

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

使用给定的方向和parent构造

QSplitter::~QSplitter()

析构分割器,所有的字窗口都被delete

void QSplitter::addWidget(QWidget *widget)

在所有其他项之后将给定的小部件添加到拆分器的布局中。

如果小部件已经在拆分器中,它将被移动到新位置。

注意:splitter获取小部件的所有权。

[virtual protected] void QSplitter::changeEvent(QEvent *ev)

从QWidget::changeEvent()重新实现

[virtual protected] void QSplitter::childEvent(QChildEvent *c)

[protected] int QSplitter::closestLegalPosition(int pos, int index)

int QSplitter::count() const

[virtual protected] QSplitterHandle *QSplitter::createHandle()

[virtual protected] bool QSplitter::event(QEvent *e)

void QSplitter::getRange(int index, int *min, int *max) const

Returns the valid range of the splitter at index in *min and *max if min and max are not 0.

QSplitterHandle *QSplitter::handle(int index) const

int QSplitter::indexOf(QWidget *widget) const

void QSplitter::insertWidget(int index, QWidget *widget)

bool QSplitter::isCollapsible(int index) const

[protected] void QSplitter::moveSplitter(int pos, int index)

将splitter句柄的左边缘或上边缘移动到尽可能靠近pos的位置,pos是小部件的左边缘或上边缘的距离。

对于从右到左的语言,如阿拉伯语和希伯来语,水平分割器的布局是相反的。pos则是到小部件右边缘的距离。

void QSplitter::refresh()

Updates the splitter's state. You should not need to call this function.

QWidget *QSplitter::replaceWidget(int index, QWidget *widget)

将拆分器布局中的小部件按小部件替换为给定的索引。

如果索引有效且小部件还不是拆分器的子部件,则返回刚刚被替换的小部件。否则,它将返回null,并且不进行替换或添加。

新插入的小部件的几何形状将与它替换的小部件相同。它可见的和崩溃的状态也被继承。

注意:splitter获取小部件的所有权,并将被替换小部件的父组件设置为null。

注意:由于小部件被重新插入到拆分器中,所以可能不会立即设置其几何形状,但只有在小部件接收到适当的事件之后才会这样做。

[virtual protected] void QSplitter::resizeEvent(QResizeEvent *)

Reimplemented from QWidget::resizeEvent().

bool QSplitter::restoreState(const QByteArray &state)

将拆分器的布局恢复到指定的状态。如果状态被恢复,则返回true;否则返回false。

通常,它与QSettings一起使用,以从过去的会话中恢复大小。下面是一个例子:

恢复拆分器的状态:

QSettings settings;
      splitter->restoreState(settings.value("splitterSizes").toByteArray());​​​​​​​

QByteArray QSplitter::saveState() const

保存拆分器布局的状态。

通常,这与QSettings一起使用,以记住未来会话的大小。版本号作为数据的一部分存储。下面是一个例子:

      QSettings settings;
      settings.setValue("splitterSizes", splitter->saveState());

void QSplitter::setCollapsible(int index, bool collapse)

设置索引处的子小部件是否可折叠以折叠。

默认情况下,子元素是可折叠的,这意味着用户可以将它们的大小调整为0,即使它们有一个非零的minimumSize()或minimumSizeHint()。可以通过调用这个函数对每个小部件的行为进行更改,也可以通过设置children可折叠属性对splitter中的所有小部件进行全局更改。

在pos位置显示橡皮筋,如果pos为负数,则将橡皮筋移除。

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

将子小部件的各自大小设置为列表中给定的值。

如果拆分器是水平的,则值设置每个小部件的宽度(以像素为单位),从左到右。如果拆分器是垂直的,则设置每个小部件的高度,从上到下。

列表中的额外值将被忽略。如果列表包含的值太少,则结果是未定义的,但程序仍然表现良好。
splitter小部件的总体大小不受影响。相反,根据大小的相对权重,在小部件之间分布任何额外的/缺失的空间。

如果指定大小为0,则小部件将是不可见的。小部件的大小策略被保留。也就是说,比相应小部件的最小大小提示小的值将被提示的值替换。

void QSplitter::setStretchFactor(int index, int stretch)

更新小部件在位置索引处的大小策略,使其具有拉伸因子。

拉伸不是有效的拉伸因子;计算有效拉伸因子的方法是将小部件的初始大小与拉伸相乘。

提供此功能是为了方便。它等于

  QWidget *widget = splitter->widget(index);
  QSizePolicy policy = widget->sizePolicy();
  policy.setHorizontalStretch(stretch);
  policy.setVerticalStretch(stretch);
  widget->setSizePolicy(policy);

[virtual] QSize QSplitter::sizeHint() const

Reimplemented from QWidget::sizeHint().

QList<int> QSplitter::sizes() const

返回此拆分器中所有小部件的大小参数列表。

如果拆分器的方向是水平的,则列表包含小部件宽度(以像素为单位),从左到右;如果方向是垂直的,则列表包含小部件的高度(以像素为单位),从上到下。

将值赋给另一个拆分器的setsize()函数将生成一个与此布局相同的拆分器。

注意,不可见的小部件的大小为0。

[signal] void QSplitter::splitterMoved(int pos, int index)

分割器移动的信号

QWidget *QSplitter::widget(int index) const

返回参数索引的窗口的指针

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值