4

我有一个 QListWidget,里面有一些小部件:

QListWidgetItem* w = new QListWidgetItem(ui->listWidget);
ui->listWidget->addItem(w);
w->setSizeHint(widget->sizeHint());
ui->listWidget->setItemWidget(w, widget);

但是,在我调整大小之前,一切似乎都运行良好QListWidget(它嵌入到 a 中QDockwidget)。我是否必须遍历所有项目并手动调整它们的大小,还是有一个简单的技巧?

它只是一个列表,其中的项目在左侧有一个按钮,在右侧有一个按钮。如果列表调整大小(QSize更改),则按钮将被隐藏并出现滚动条。我想根据列表宽度获得项目的大小。

4

1 回答 1

5

尝试将resizeMode属性设置为Adjust. 这将导致您QListWidget自动将视图中的所有项目的大小QListWidget调整为小部件调整大小时的大小。

请参阅此处的文档。您的代码结构如下:

QListWidgetItem* w = new QListWidgetItem(ui->listWidget);
w->setSizeHint(widget->sizeHint());
ui->listWidget->setResizeMode(QListView::Adjust);
ui->listWidget->addItem(w);
ui->listWidget->setItemWidget(w, widget);

编辑:根据您的项目的统一性,您还可以从设置uniformItemSizes属性中受益。 QListView如果设置此属性,则可以优化视图的布局。

于 2013-09-10T14:50:56.113 回答