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);
相关推荐
码兄科技5 小时前
Java AI智能体开发实战:从零构建智能对话系统指南
java·开发语言·人工智能
问君能有几多愁~5 小时前
C++ 数据结构复习笔记
数据结构·c++·笔记
tntxia6 小时前
C++ 基础教程:从入门到精通
c++
Drone_xjw6 小时前
从 GDB 到 CDB:C/C++ 程序调试的两把“手术刀”
c语言·开发语言·c++
SL-staff6 小时前
智慧园区2000+设备统一管理:JVS-IoT如何降低运维成本40%
java·开发语言·物联网·智慧园区·设备管理·运维优化·jvs-iot
2zcode8 小时前
基于MATLAB图像处理的饮料瓶灌装液位检测系统设计与实现
开发语言·图像处理·matlab
必须得开心呀9 小时前
QT解决中文乱码问题
开发语言·qt
熊猫_豆豆9 小时前
QT6 Android C++ 自制美观闹钟
android·c++·qt·闹钟
随意起个昵称10 小时前
状压dp-基础题目2([USACO12MAR] Cows in a Skyscraper G)
c++·算法·动态规划
这不小天嘛10 小时前
JAVA八股——redis篇
java·开发语言·redis