QT5.9 实现 界面可折叠
时间: 2023-06-18 14:06:27 浏览: 76
可以通过使用QSplitter和QToolButton来实现可折叠的界面。具体步骤如下:
1.将QSplitter控件添加到主窗口中,设置为垂直或水平模式。
2.将QToolButton控件添加到QSplitter的顶部或左侧,作为折叠按钮。
3.通过QSplitter的addWidget()函数将需要折叠的控件添加到QSplitter中。
4.在QToolButton的clicked()信号中,使用QSplitter的setSizes()函数来控制需要折叠的控件的大小。
示例代码:
```cpp
QSplitter *splitter = new QSplitter(Qt::Vertical, this);
QToolButton *foldBtn = new QToolButton(this);
foldBtn->setArrowType(Qt::DownArrow);
splitter->addWidget(foldBtn);
QWidget *contentWidget = new QWidget(splitter);
QVBoxLayout *layout = new QVBoxLayout(contentWidget);
// 添加需要折叠的控件
layout->addWidget(new QLabel("Hello World"));
splitter->addWidget(contentWidget);
// 设置折叠按钮的大小策略,避免被压缩
foldBtn->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
connect(foldBtn, &QToolButton::clicked, [=](){
if (splitter->sizes().at(0) == 0) {
// 展开
foldBtn->setArrowType(Qt::DownArrow);
splitter->setSizes({50, 100});
} else {
// 折叠
foldBtn->setArrowType(Qt::RightArrow);
splitter->setSizes({0, 100});
}
});
```
在这个示例中,我们使用了QSplitter和QToolButton来实现了一个简单的可折叠界面。用户可以点击折叠按钮来展开或折叠控件。