标题:向qt的布局中添加 widget,使得布局自动增加.看了一个帖子,无法实现阿。
作者:caiwei_cs
日期:2016-12-29 11:17
内容:
找到了一个帖子:
和楼主一模一样的需求。
有高手给出解决方案:http://bbs.csdn.net/topics/390291031?page=1
button->updateGeometry ();
//resize(sizeHint());//这一句如果要的话程序会消失。
但是我试了一下button->updateGeometry ();并不起作用。
不知道是不是哪里不对。如果尝试可以,不知道能不能请给出完整代码,我看看是不是我哪里设置错了。
我的测试代码为:
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
w1 = new QWidget(this);
w1->setStyleSheet("background-color:red;");
w1->setFixedSize(150,20);
w2 = new QWidget(this);
w2->setStyleSheet("background-color:green;");
w2->move(20,20);
w2->setFixedSize(150,60);
w3 = new QWidget(this);
w3->setStyleSheet("background-color:yellow;");
w3->move(30,30);
w3->setFixedSize(150,100);
w1->show();
w2->show();
w3->show();
wm = new QWidget(this);
wm->setStyleSheet("background-color:blue;");
wm->setContentsMargins(0,0,0,0);
wm->resize(w1->width()+30,w1->height()+w2->height()+w3->height());
wm->move(10,10);
layoutmy = new QVBoxLayout(this);
layoutmy->addWidget(w1);
layoutmy->addWidget(w2);
layoutmy->addWidget(w3);
wm->setLayout(layoutmy);
wm->show();
}
Widget::~Widget()
{
delete..
#1 [caiwei_cs 12-30 12:37]
自己顶一下
#2 [caiwei_cs 01-03 09:24]
自己顶一下。
#3 [272064949 01-03 14:54]
有两种方法可以。
1, 只有布局才能自动更改界面的大小, 在你的代码的构造函数的最后面加上
ui->verticalLayout->addWidget(wm);
把wm添加到布局文件中
2, 把wm父指定为空。
这样wm = new QWidget; 不要把this做为父传到wm里面去。
让它做为一个单独的窗口显示。
不要轻易的指定一个控件和布局的父,要根据情况和你的需求来指定, 要不乱套。