• 9437阅读
  • 4回复

动态创建控件的时候会“闪”一下,请问怎么解决 [复制链接]

上一主题 下一主题
离线caixun2002
 

只看楼主 倒序阅读 楼主  发表于: 2010-08-16
— 本帖被 XChinux 执行加亮操作(2010-09-01) —
问题1:我是想往QListWidget里面添加动态添加一个由Label和ProgressBar组成的东西,试过Frame和Widget,都是会先闪出一个Form,然后才能添加到QListWidget里面。
我认为是show()的原因,但是把widget->show();放到ui->listWidget->setItemWidget(item,widget);后面的话,列表中添加的内容就显示不出来了,不知道怎么解决这个问题。
问题2:
我用到的这个QListWidget,虽然我把gardSize的Height改成了50,多个item之间不会重合了,但是【选择】这个item的区域还是没有变大,怎样把选择区域变的跟动态添加的这个widget(或别的)一样大呢?
代码如下:
  1.     QProgressBar *fileProgressBar=new QProgressBar;
  2.     QLabel *label=new QLabel(filename, ui->listWidget);
  3.     QListWidgetItem *item=new QListWidgetItem;
  4.     ui->listWidget->addItem(item);
  5.     QHBoxLayout *hbox=new QHBoxLayout;
  6.     hbox->addWidget(label);
  7.     hbox->addWidget(fileProgressBar);
  8.     QWidget *widget = new QWidget(ui->listWidget,Qt::Window);
  9.     widget->setLayout(hbox);
  10.     widget->show();
  11.     ui->listWidget->setItemWidget(item,widget);
谢谢关注。
离线caixun2002

只看该作者 1楼 发表于: 2010-08-16
我就是想做出这种效果,是不是出发点就错了,不该用QListWidget?
离线caixun2002

只看该作者 2楼 发表于: 2010-08-17
QWidget *widget = new QWidget(ui->listWidget,Qt::Window);
这个地方Qt::Window我去掉后,他就在ui->listWidget不显示了
QWidget *widget = new QWidget(this,Qt::Window);
他会弹出窗口,但是
QWidget *widget = new QWidget(this);
可以直接显示在主窗口上
但是这样的话,添加进ui->listWidget会也显示不了。
离线water_wf

只看该作者 3楼 发表于: 2010-08-17
这个多试下吧,demo/browser 里面有例子,也是下载
离线caixun2002

只看该作者 4楼 发表于: 2010-08-17
恩,好了,是parent的问题,把几个东东的parent整理了下,然后去掉了Qt::Window就OK了。
快速回复
限100 字节
 
上一个 下一个