相关疑难解决方法(0)

如何在Qt中创建可扩展/可折叠部分小部件

我想在Qt中创建一个具有以下功能的自定义小部件:

  • 这是一个容器
  • 它可以填充任何Qt布局
  • 它可能在任何Qt布局中
  • 按钮允许垂直折叠/折叠内容,因此只有按钮可见,所有包含的布局都是不可见的.
  • 上一个按钮允许再次展开/展开布局内容的大小.
  • 扩展/折叠基于大小(不显示/隐藏)以允许动画.
  • 可用于QDesigner

为了提供一个想法,这里是一个类似的小部件(而不是Qt)的图像: 在此输入图像描述

我已经有一个正常工作的框架,并在QDesigner中公开.我现在需要让它扩展/崩溃,这似乎并不那么简单.

我尝试使用resize(),sizePolicy(),sizeHint(),但这不起作用:当框架折叠时,我得到以下值:

sizeHint: (500,20)
size    : (500,20)
closestAcceptableSize: (518,150)
Painted size: (518, 150)
Run Code Online (Sandbox Code Playgroud)

QLayout :: closestAcceptableSize不是小部件的一部分,因此我无法更改它.

任何提示或/和代码片段来实现这一点?

编辑:这是一个简单的例子.除了必要的我删除了所有.

main.cpp示例

#include <QWidget>
#include <QPushButton>
#include <QVBoxLayout>

#include "section.hpp"


using namespace myWidgets;
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);


    // Create the main Window
    QWidget window;
    window.resize(500,500);
    window.setStyleSheet("QPushButton:{background-color:rgba(128,128,128,192);}");

    // Create the main window layout
    QVBoxLayout topLayout(&window);
    QWidget *w1 = new QWidget();
    w1->setStyleSheet("background-color:rgba(128,128,128,192);");
    topLayout.addWidget(w1);

    Section section(&window);
    topLayout.addWidget(&section);

    QVBoxLayout inLayout(&section);
    QPushButton *button = …
Run Code Online (Sandbox Code Playgroud)

c++ qt widget custom-controls qwidget

40
推荐指数
5
解决办法
2万
查看次数

标签 统计

c++ ×1

custom-controls ×1

qt ×1

qwidget ×1

widget ×1