查看完整版本: [-- QT 一组代码生成的控件布局后,运行只显示一部分 --]

QTCN开发网 -> Qt基础编程 -> QT 一组代码生成的控件布局后,运行只显示一部分 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

太阳真圆 2016-12-16 22:36

QT 一组代码生成的控件布局后,运行只显示一部分

在A类(添加类的时候继承了QWidget)的初始化函数中,用代码来动态生成一组控件,用布局把这些控件组合在一起。
在B类中初始化函数中 new A类一个实例。
但是运行后只显示了一部分。如下图所示:
[attachment=16235]

编译什么的都没有错误,这是什么问题呢?
下面是A类初始化函数代码:
void taskProcessObject::initialProcessObj(){  
//布局    taskObjectGroupBox = new QGroupBox(this);    
taskObjectHLayout = new QHBoxLayout(taskObjectGroupBox);    
//初始化控件    
taskStatusLabel = new QLabel(taskObjectGroupBox);    
taskStatusLabel->setFixedSize(32,32);      
taskStartTimeLineEdit = new QLineEdit(taskObjectGroupBox);    
taskEndTimeLineEdit = new QLineEdit(taskObjectGroupBox);    
taskChargeLineEdit = new QLineEdit(taskObjectGroupBox);    
personPhoneLineEdit = new QLineEdit(taskObjectGroupBox);    
//进行布局    
taskObjectHLayout->addWidget(taskStatusLabel);    
taskObjectHLayout->addWidget(taskStartTimeLineEdit);  
taskObjectHLayout->addWidget(taskEndTimeLineEdit);  
taskObjectHLayout->addWidget(taskChargeLineEdit);    
taskObjectHLayout->addWidget(personPhoneLineEdit);
}下面是B类初始化函数中 new A类对象的代码,但是显示不出来:
taskProcessObject *taskProObj = new taskProcessObject(ui->taskTabThird);
也试过下面的方法,也不行:
taskObjGroupBox = new QGroupBox(ui->taskTabThird);
taskObjVLayout = new QVBoxLayout(taskObjGroupBox);
taskObjVLayout->addWidget(new taskProcessObject());


lemonzll 2016-12-17 08:13
你检查下layout的parent设置对没有,或者用了setlayout没有

太阳真圆 2016-12-17 10:21
lemonzll:你检查下layout的parent设置对没有,或者用了setlayout没有 (2016-12-17 08:13) 

都设置了的

太阳真圆 2016-12-17 10:22
A类的初始化代码如下图:
[attachment=16238]
B类加载A类的代码如下图:
[attachment=16239]

太阳真圆 2016-12-17 10:23
lemonzll:你检查下layout的parent设置对没有,或者用了setlayout没有 (2016-12-17 08:13) 

看3楼的代码

xzfn 2016-12-17 15:42
问题没说清楚,图片也看不清呀。
所谓的A类是taskProcessObject?
最后一行好像有问题,我猜你是想:
taskObjGLayout->addWidget(new taskProcessObject, xx, xx);


lemonzll 2016-12-17 16:13
 你直接在main函数里面先建个A类的对象,调用下show显示出来,先测试下A类对不对。要不对感觉还是layout的问题

太阳真圆 2016-12-17 17:18
xzfn:问题没说清楚,图片也看不清呀。
所谓的A类是taskProcessObject?
最后一行好像有问题,我猜你是想:
taskObjGLayout->addWidget(new taskProcessObject, xx, xx);
....... (2016-12-17 15:42) 

我最后一行代码是:taskProcessObject *taskProObj = new taskProcessObject(ui->taskTabThird);
也就是说我在tab里直接显示控件也不行
我前面也试过taskObjVLayout->addWidget(new taskProcessObject()); 但也是什么都没有

太阳真圆 2016-12-17 17:19
lemonzll: 你直接在main函数里面先建个A类的对象,调用下show显示出来,先测试下A类对不对。要不对感觉还是layout的问题 (2016-12-17 16:13) 

A类没有show函数呀,A类是一个自己定义的控件组合


查看完整版本: [-- QT 一组代码生成的控件布局后,运行只显示一部分 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled