• 4476阅读
  • 8回复

[提问]QT 一组代码生成的控件布局后,运行只显示一部分 [复制链接]

上一主题 下一主题
离线太阳真圆
 

只看楼主 倒序阅读 楼主  发表于: 2016-12-16
在A类(添加类的时候继承了QWidget)的初始化函数中,用代码来动态生成一组控件,用布局把这些控件组合在一起。
在B类中初始化函数中 new A类一个实例。
但是运行后只显示了一部分。如下图所示:


编译什么的都没有错误,这是什么问题呢?
下面是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

只看该作者 1楼 发表于: 2016-12-17
你检查下layout的parent设置对没有,或者用了setlayout没有
离线太阳真圆

只看该作者 2楼 发表于: 2016-12-17
回 lemonzll 的帖子
lemonzll:你检查下layout的parent设置对没有,或者用了setlayout没有 (2016-12-17 08:13) 

都设置了的
离线太阳真圆

只看该作者 3楼 发表于: 2016-12-17
A类的初始化代码如下图:

B类加载A类的代码如下图:
离线太阳真圆

只看该作者 4楼 发表于: 2016-12-17
回 lemonzll 的帖子
lemonzll:你检查下layout的parent设置对没有,或者用了setlayout没有 (2016-12-17 08:13) 

看3楼的代码
离线xzfn

只看该作者 5楼 发表于: 2016-12-17
问题没说清楚,图片也看不清呀。
所谓的A类是taskProcessObject?
最后一行好像有问题,我猜你是想:
taskObjGLayout->addWidget(new taskProcessObject, xx, xx);

在线lemonzll

只看该作者 6楼 发表于: 2016-12-17
 你直接在main函数里面先建个A类的对象,调用下show显示出来,先测试下A类对不对。要不对感觉还是layout的问题
离线太阳真圆

只看该作者 7楼 发表于: 2016-12-17
回 xzfn 的帖子
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()); 但也是什么都没有
离线太阳真圆

只看该作者 8楼 发表于: 2016-12-17
回 lemonzll 的帖子
lemonzll: 你直接在main函数里面先建个A类的对象,调用下show显示出来,先测试下A类对不对。要不对感觉还是layout的问题 (2016-12-17 16:13) 

A类没有show函数呀,A类是一个自己定义的控件组合
快速回复
限100 字节
 
上一个 下一个