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 小时前
SRC 挖洞:PostScript 打印机驱动双 RCE,打印服务器怎么变成内网跳板
开发语言·网络安全·php·内网安全
十年Java程序媛5 小时前
Java枚举Enum完整教程|替代静态常量,开发与面试要点
java·开发语言·spring boot·后端·面试
2603_965148116 小时前
电商选品调研:通过关键词搜索API获取市场热销商品,结合商品详情API分析竞品卖点与定价
开发语言·数据库·人工智能·python·信息可视化
所以遗憾是什么呢?6 小时前
【题解】Educational Codeforces Round 195 (Rated for Div. 2) ABCDE
c++·动态规划·acm·icpc·ccpc·xcpc·codeforecs
xixiaoyunya6 小时前
Python 异步编程入门:用 asyncio 轻松实现并发任务
开发语言·python·php
学逆向的7 小时前
C 循环结构的执行效率分析
c语言·开发语言·数据结构·网络安全
小坏讲微服务7 小时前
刚发布一个月的JDK 27,为什么我建议你立刻升级?
java·开发语言·spring boot·spring·架构·求职招聘·springboot4
Lhan.zzZ8 小时前
Qt WebEngineView 在 Linux 上无法加载网页:从“看不见 HTML“到“禁用沙箱“
linux·c++·qt
打工仔折腾 AI8 小时前
用 Dashlet 把极空间 NAS 服务入口整理成统一导航首页的实践
java·开发语言·人工智能·后端·python·rpc·ai agent 实战
MATLAB代码顾问9 小时前
Simulink PI 参数扫描与批量仿真完整 MATLAB 代码
开发语言·matlab