You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qt框架新建QWidget内添加QLabel不显示问题求助

问题根因
  • 你代码中的QLabel label1是函数内的栈局部变量,当on_btn_edit_clicked回调函数执行完成后,栈空间会被回收,label1对象会被自动析构销毁,因此弹出的窗口中已经不存在该Label对象,自然无法显示。
修复方案

最常用的修复方式是将QLabel改为堆上创建,依托Qt的父子对象自动回收机制避免内存泄漏,修改后的代码如下:

void maquette::on_btn_edit_clicked()
{
    QWidget* wdg = new QWidget;
    wdg->resize(320, 340);
    wdg->setWindowTitle("Modiffier");
    // 堆上创建QLabel,父对象绑定为wdg,wdg销毁时会自动回收label内存
    QLabel* label1 = new QLabel("matricule", wdg);
    label1->setGeometry(100, 100, 100, 100);
    wdg->show();
}

可选替代方案

如果不想用堆分配,也可以将QLabel声明为maquette类的成员变量,函数执行完成后成员变量不会被销毁,也可以正常显示。需要注意如果多次点击按钮创建多个窗口,成员变量只会保留最后一个创建的Label的引用,可根据业务需求选择对应方案。

内容的提问来源于stack exchange,提问作者yassine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 10:00:07