我使用setViewMode(QListView :: ListMode)和setFlow(QListView :: TopToBottom)创建了一个QListWidget来获取:

screenshot

图标和文本之间的大空间看起来很奇怪,所以我尝试将其删除:

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));

但是,它似乎并不一致,我不得不使用30来计算图标区域,这不是一个非常好的解决方案,特别是如果图标的大小发生变化 .

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