QStackedLayout 类
QStackedLayout 类提供了一种只显示一个部件的堆栈布局。 更多...
头文件 | #include <QStackedLayout> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake | QT += widgets |
继承 | QLayout |
公共类型
枚举 | StackingMode { StackOne, StackAll } |
属性
- count : const int
- currentIndex : int
- stackingMode : StackingMode
公共函数
QStackedLayout() | |
QStackedLayout(QWidget *parent) | |
QStackedLayout(QLayout *parentLayout) | |
虚拟 | ~QStackedLayout() |
int | addWidget(QWidget *widget) |
int | currentIndex() const |
QWidget * | currentWidget() const |
int | insertWidget(int index, QWidget *widget) |
void | setStackingMode(QStackedLayout::StackingMode stackingMode) |
QStackedLayout::StackingMode | stackingMode() const |
QWidget * | widget(int index) const |
重写公共函数
虚拟 void | addItem(QLayoutItem *item) override |
虚拟 int | count() const override |
虚拟 bool | hasHeightForWidth() const override |
虚拟 int | heightForWidth(int width) const override |
虚拟 QLayoutItem * | itemAt(int index) const override |
虚拟 QSize | minimumSize() const override |
虚拟 void | setGeometry(const QRect &rect) override |
虚拟 QSize | sizeHint() const override |
虚拟 QLayoutItem * | takeAt(int index) override |
公共槽
void | setCurrentIndex(int index) |
void | setCurrentWidget(QWidget *widget) |
信号
void | currentChanged(int index) |
void | widgetRemoved(int index) |
详细描述
QStackedLayout 可以用来创建类似于 QTabWidget 提供的用户界面。还有一个基于 QStackedLayout 的便捷类 QStackedWidget。
QStackedLayout 可以包含多个子控件(“页面”)。例如
QWidget *firstPageWidget = new QWidget; QWidget *secondPageWidget = new QWidget; QWidget *thirdPageWidget = new QWidget; QStackedLayout *stackedLayout = new QStackedLayout; stackedLayout->addWidget(firstPageWidget); stackedLayout->addWidget(secondPageWidget); stackedLayout->addWidget(thirdPageWidget); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addLayout(stackedLayout); setLayout(mainLayout);
QStackedLayout 没有提供使用户切换页面的内置方法。这通常通过一个存储 QComboBox 或 QListWidget 的页标题的 QStackedLayout 的 QStackedLayout 来完成。例如
QComboBox *pageComboBox = new QComboBox; pageComboBox->addItem(tr("Page 1")); pageComboBox->addItem(tr("Page 2")); pageComboBox->addItem(tr("Page 3")); connect(pageComboBox, &QComboBox::activated, stackedLayout, &QStackedLayout::setCurrentIndex);
在填充布局时,将控件添加到一个内部列表中。函数indexOf()返回该列表中控件的索引。控件可以使用 addWidget() 函数添加到列表的末尾,或使用 insertWidget() 函数插入到指定索引。使用 removeWidget() 函数从布局中移除给定索引的控件。主布局中包含控件的数量,可以使用 count() 函数获得。
widget() 函数返回给定索引位置上的控件。在屏幕上显示的控件的索引由 currentIndex() 给出,可以使用 setCurrentIndex() 来更改。类似地,可以使用 currentWidget() 函数检索当前显示的控件,并使用 setCurrentWidget() 函数来修改。
每当布局中的当前控件更改或从布局中移除控件时,分别发出 currentChanged() 和 widgetRemoved() 信号。
另请参阅QStackedWidget 和 QTabWidget。
成员类型文档
枚举 QStackedLayout::StackingMode
此枚举指定布局如何处理子控件的可见性。
常量 | 值 | 描述 |
---|---|---|
QStackedLayout::StackOne | 0 | 只有一个当前控件可见。这是默认值。 |
QStackedLayout::StackAll | 1 | 所有控件都可见。当前控件仅被提升。 |
属性文档
[只读]
count : const int
此属性包含布局中的控件数量
访问函数
虚拟 int | count() const override |
另请参阅currentIndex() 和 widget()。
currentIndex : int
此属性包含可见控件的索引位置
如果没有当前控件,当前索引为 -1。
访问函数
int | currentIndex() const |
void | setCurrentIndex(int index) |
通知信号
void | currentChanged(int index) |
另请参阅currentWidget() 和 indexOf()。
堆叠模式 : StackingMode
确定处理子部件可见性的方式。
默认值是 StackOne。将属性设置为 StackAll 可以让您利用布局来重叠小部件,比如图形编辑器。
访问函数
QStackedLayout::StackingMode | stackingMode() const |
void | setStackingMode(QStackedLayout::StackingMode stackingMode) |
成员函数文档
QStackedLayout::QStackedLayout()
以无父项的方式构建一个 QStackedLayout。
此 QStackedLayout 必须稍后安装到小部件才能生效。
另请参阅addWidget() 和 insertWidget()。
[显式]
QStackedLayout::QStackedLayout(QWidget *parent)
使用给定的 parent 构建一个新的 QStackedLayout。
此布局将安装自身到 parent 小部件并管理其子部件的几何形状。
[显式]
QStackedLayout::QStackedLayout(QLayout *parentLayout)
构建一个新的 QStackedLayout,并将其插入给定的 parentLayout。
[虚,noexcept]
QStackedLayout::~QStackedLayout()
销毁此 QStackedLayout。注意,布局的小部件不会被销毁。
[重写虚]
void QStackedLayout::addItem(QLayoutItem *item)
重写:QLayout::addItem(QLayoutItem *item).
int QStackedLayout::addWidget(QWidget *widget)
将给定的小部件 widget 添加到布局的末尾,并返回 widget 的索引位置。
如果在调用此函数之前,布局是空的,给定的小部件 widget 将成为当前小部件。
另请参阅insertWidget,removeWidget 和 setCurrentWidget。
[信号]
void QStackedLayout::currentChanged(int index)
每当布局中的当前小部件发生变化时,都会发出此信号。 index 指定了新当前小部件的索引,或者在不存在新小部件的情况下(例如,如果布局中没有小部件),则为 -1。
注意:属性 currentIndex 的通知器信号。
另请参阅currentWidget() 和 setCurrentWidget。
QWidget *QStackedLayout::currentWidget() const
返回当前小部件,或者如果此布局中没有小部件,则返回 nullptr
。
另请参阅 currentIndex() 和 setCurrentWidget()。
[覆盖虚拟]
bool QStackedLayout::hasHeightForWidth() const
重新实现: QLayoutItem::hasHeightForWidth() const。
[覆盖虚拟]
int QStackedLayout::heightForWidth(int width) const
重新实现:QLayoutItem::heightForWidth(int) const。
int QStackedLayout::insertWidget(int index, QWidget *widget)
在给定 index 的位置插入指定的 widget。如果 index 超出范围,则将 widget 追加(在这种情况下,返回的其实是 widget 的实际索引)。
如果在调用此函数之前,布局是空的,给定的小部件 widget 将成为当前小部件。
在小于或等于当前索引的索引处插入新 widget 将会增加当前索引,但不会改变当前 widget。
另请参阅 addWidget(), removeWidget()和 setCurrentWidget()。
[覆盖虚拟]
QLayoutItem *QStackedLayout::itemAt(int index) const
重新实现:QLayout::itemAt(int index) const。
[覆盖虚拟]
QSize QStackedLayout::minimumSize() const
重新实现:QLayout::minimumSize() const。
[槽]
void QStackedLayout::setCurrentWidget(QWidget *widget)
将当前 widget 设置为指定的 widget。新的当前 widget 必须已经包含在本 stacked 布局中。
另请参阅 setCurrentIndex()和 currentWidget()。
[覆盖虚拟]
void QStackedLayout::setGeometry(const QRect &rect)
重新实现:QLayout::setGeometry(const QRect &r)。
[覆盖虚拟]
QSize QStackedLayout::sizeHint() const
重新实现:QLayoutItem::sizeHint() const。
[覆盖虚拟]
QLayoutItem *QStackedLayout::takeAt(int index)
重新实现:QLayout::takeAt(int index)。
QWidget *QStackedLayout::widget(int index) const
返回给定 index 的 widget,如果没有给定位置的 widget,则返回 nullptr
。
另请参阅currentWidget() 和 indexOf()。
[信号]
void QStackedLayout::widgetRemoved(int index)
每当从布局中移除小部件时,都会发出此信号。将小部件的 索引 作为参数传递。
另请参阅 removeWidget。
© 2024 Qt公司。本文件中包含的文档贡献者是各自内容的版权所有者。本文件的文档根据自由软件基金会的发布,按照GNU自由文档许可证版本1.3的条款进行许可。Qt以及相关的商标配属于芬兰Qt公司及其在全世界的子公司和附属机构。所有其他商标属于各自的所有者。