• 6073阅读
  • 2回复

[提问]关于动态创建部件的显示问题 [复制链接]

上一主题 下一主题
离线xiao_xiao_ca
 
只看楼主 倒序阅读 楼主  发表于: 2012-05-22
遍历文件夹,我的想法是在循环里得到一个文件名filmName,就动态创建一个按钮和一个LINEEDIT,循环里部分代码如下:
            line = new QLineEdit(this);            
            line->setText(filmName);            
            playBtn = new QPushButton(tr("删除"), this);            
            hbox = new QHBoxLayout;            
            hbox->addWidget(playBtn);            
            hbox->addWidget(line);            
            hbox->addWidget(playBtn);            
            hbox->addWidget(line);
      现在问题是等到循环接收后调用setLayout(hbox);时只显示最后创建的按钮和EDIT,请问这是什么原因呢,而如果不用布局管理的话,就可以都显示所有按钮和EDIT,但是得重新计算摆放位置,新手,小白之处敬请谅解!
       还有个问题,我希望这个页面显示出来8个文件名后,能自动创建出下一页显示,应该用什么部件实现呢?
离线roywillow

只看该作者 1楼 发表于: 2012-05-22
Re:关于动态创建控件的显示问题
………………………………………………………………………………
………………………………………………………………
hbox = new QHBoxLayout;
这句话你确定放在循环里妥当?
每次循环都会创建一个新的hbox
然后让这个新的hbox来对新的文本框和按钮布局
但是最终你却只把最后一个hbox添加进了窗口中
其他的hbox你认为跑哪去了?
另外这些多余的hbox没有parent,估计不会被Qt自动析构吧
以及你用中文确定不会乱码?
如果说创建下一页的话,用stackwidget或许能解决?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线jdwx

只看该作者 2楼 发表于: 2012-05-22
自己造一个widget:1个QLineEdit,1个QPushButton,放到QHBoxLayout内,最外面QWidget。
将这个widget塞进QListWidget里,既简单又方便,但是太多了不行,几百一千的没问题。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
快速回复
限100 字节
 
上一个 下一个