Qt 中 QWidget 调用setLayout 后不显示

开发过程中,自己创建了一个QVBoxLayout 对象以后,调用 QWidget 的 setLayout 方法,将这个Layout 对象应用到窗口中,运行后没有显示添加的控件。

QWidget 已有布局,新设置的无效,解决方法如下:

1 获取 QWidget 布局 QLayout;

2 删除 布局中的控件和布局

3 重新添加布局和控件

示例如下:

复制代码
    // step 1
    QLayout *delLayout = ui->widgetCustom->layout();

    // step 2
    if (delLayout)
    {
        // qDeleteAll(this->findChildren<QObject*>()); // error
        // delLayout->deleteLater();
        // delLayout = nullptr;

        QLayoutItem* item;
        while ((item = delLayout->takeAt(0)) != nullptr)
        {
            if (QWidget* widget = item->widget())
            {
                widget->hide();
                widget->deleteLater();
            }
            delete item;
        }

        delete delLayout;
    }

    // step 3
    m_vBoxlayout = new QVBoxLayout();
    m_btn1 = new QPushButton();
    m_vBoxlayout->addWidget(m_btn1);
    ui->widgetCustom->setLayout(m_vBoxlayout);
相关推荐
从小就看凹凸曼^o^16 小时前
Python基础5 - 字典与集合:(1)字典
开发语言·python
侧耳倾听11116 小时前
java 日志框架简介
java·开发语言
zlinear数据采集卡16 小时前
数据采集卡从入门到精通(9):分辨率与精度——16位卡不等于1/65536的精度
开发语言·数据库·fpga开发·开源·c#
全栈技术负责人16 小时前
解密 MCP(Model Context Protocol):大模型时代的“Type-C”总线与三驾马车架构深度解析
开发语言·ai·架构
丰锋ff17 小时前
1.7在Qt窗口中添加右键菜单
开发语言·qt
Titan202417 小时前
Linux网络学习:套接字、UDP的封装与应用
linux·服务器·开发语言·网络·c++
Felven17 小时前
C2. Potions (Hard Version)
c++
鸿芯微控科技17 小时前
压电点胶阀出胶量不稳定怎么排查?驱动波形、背压、点胶重量与Python分析
开发语言·python·压电点胶阀·精密点胶·点胶重量·流体控制
原野池予18 小时前
深入Java集合框架:HashMap源码解析(JDK 8)
java·开发语言
Logintern0918 小时前
asyncio里面的await理解
开发语言·python