c++ - QListWidget的IconMode使用setItemWidget,item控件有几率显示异常是怎么回事?

浏览:38日期:2023-04-12

问题描述

首先我的功能是点击一下按钮就往QListWidget添加一个Item,但是添加两三个后其中一个控件一直不正常(通常是倒数第2个,偶尔会是其它的,甚至两个)c++ - QListWidget的IconMode使用setItemWidget,item控件有几率显示异常是怎么回事?

继续添加一次,之前显示不正常的控件又正常了。。。c++ - QListWidget的IconMode使用setItemWidget,item控件有几率显示异常是怎么回事?

这是代码c++ - QListWidget的IconMode使用setItemWidget,item控件有几率显示异常是怎么回事?

以上问题的排查,QListWidget使用IconMode,不用setItemWidget来自定义控件一切正常,QListWidget不用IconMode,使用setItemWidget来自定义控件也一切正常。

后来,我的代码里的QComboBox设置最小大小为80*50,不会出现上面的显示异常,又变成这样子了

c++ - QListWidget的IconMode使用setItemWidget,item控件有几率显示异常是怎么回事?

我在Qt 5.6.0 以及 5.7 测试了都有这个问题

问题解答

回答1:参考代码

ui->ltWidget->setViewMode(QListView::IconMode); // 默认list mode 上下排列, icon 左右排列 ui->ltWidget->setResizeMode( QListView::Adjust ); // 根据list widget 容器大小, 动态调整布局位置 ui->ltWidget->setSpacing(10); // 设置间隔10 for(int i=0; i < 5; ++i) {QListWidgetItem *item = new QListWidgetItem(ui->ltWidget);item->setSizeHint(QSize(80,50));QComboBox *box = new QComboBox;box->addItems(QStringList() << '1' << '2');ui->ltWidget->addItem(item);ui->ltWidget->setItemWidget(item, box); }效果图

c++ - QListWidget的IconMode使用setItemWidget,item控件有几率显示异常是怎么回事?

相关文章: