Qt中 布局管理器失效问题

Posted on 2019-11-20 21:48  RunnerAnt  阅读(711)  评论(0)    收藏  举报

1 问题描述

在Qt5.12.0 版本中,使用 自动管理器发生,无法生效

2 问题代码

Widget::Widget(QWidget *parent)
    : QWidget(parent), button1(this),button2(this),button3(this)
{
	button1.resize(100,40);
    button1.setText("button1");

    button2.resize(100,40);
    button2.setText("button2");

    button3.resize(100,40);
    button3.setText("button3");

    QVBoxLayout vboxlayout;
    vboxlayout.addWidget(&button1);
    vboxlayout.addWidget(&button2);
    vboxlayout.addWidget(&button3);

    setLayout(&vboxlayout);

    connect(&button1, SIGNAL(clicked()), this, SLOT(buttonptr1()));
    connect(&button2,SIGNAL(clicked()),this,SLOT(buttonptr2()));
    connect(&button3,SIGNAL(clicked()),this,SLOT(buttonptr3()));
}

3 问题确定和解决方案

代码中可以看出,QVBoxLayout的对象在栈中生成,在函数结束,对象也随之结束,导致管理器失效