C++ QListWidget-删除填充和;一致列宽

C++ QListWidget-删除填充和;一致列宽,c++,qt,C++,Qt,我使用setViewMode(QListView::ListMode)和setFlow(QListView::TopToBottom)创建了一个QListWidget,以获得以下结果: 图标和文本之间的大空间看起来很奇怪,因此我尝试使用以下方法将其删除: list->setStyleSheet("QListView::icon { padding-right: 0px; }"); 而且: list->setStyleSheet("QListView::icon { padding

我使用setViewMode(QListView::ListMode)和setFlow(QListView::TopToBottom)创建了一个QListWidget,以获得以下结果:

图标和文本之间的大空间看起来很奇怪,因此我尝试使用以下方法将其删除:

list->setStyleSheet("QListView::icon { padding-right: 0px; }");
而且:

list->setStyleSheet("QListView::icon { padding: 0px; }");
但两者都不能消除空间。有没有办法删除图标和文本之间的空格

另外,您将从上面的屏幕截图中看到QListWidget使用可变列宽,但我希望所有列都具有相同的宽度。我尝试了这个解决方案:

int width = 0;
int numItems = list->count();
QFontMetrics metrics(list->font());
for (int i = 0 ; i  < numItems ; ++i)
{
    if (metrics.boundingRect(list->item(i)->text()).width() > width)
        width = metrics.boundingRect(list->item(i)->text()).width();
}
list->setGridSize(QSize(width+30, 16));
int-width=0;
int numItems=list->count();
QFontMetrics(列表->字体());
对于(int i=0;iitem(i)->text()).width()>width)
width=metrics.boundingRect(列表->项(i)->text()).width();
}
列表->设置网格大小(QSize(宽度+30,16));
然而,它似乎并不一致,我不得不使用+30来解释图标区域,这不是一个很好的解决方案,特别是当图标大小改变时


有没有更好的方法使所有列的宽度相同

您是否已尝试将
QListWidgetItem
的对齐方式设置为向左?文本已向左对齐。问题是16px图标的两边都有填充,所以它实际上是22px宽的,这在文本之间留下了很大的间隙。在这个屏幕截图中,您可以更好地看到它,我点击了其中一个图标来选择它:对于
QWindowsVista
样式,填充是IIRC,固定为六个像素。这与按钮或
QLabel
上图标和文本之间的填充非常相似。