如何根据其内容调整QListWidgetItem的大小?

时间:2019-06-12 11:00:05

标签: qt qlistwidget qlistwidgetitem

我正在将QListWidgetItems添加到QListWidget。有什么方法可以根据其内容数据设置QListWidgetItem的大小吗?

QSize size(50, 20);
QListWidgetItem* newItem1 = new QListWidgetItem();
newItem1->setText("short text");
newItem1->setSizeHint(size);
listWidget->addItem(newItem1); //listWidget is previously created
QListWidgetItem* newItem2 = new QListWidgetItem();
newItem2->setText("this is a very long text");
newItem2->setSizeHint(size);
listWidget->addItem(newItem2);

显示newItem1的文本没有任何问题。但是newItem2文本不能完全显示。它只显示几个字符,然后显示“ ...”作为文本省略。如何显示完整的文字而没有遗漏?我想根据项目数据的大小设置大小,而不设置任何常数。

2 个答案:

答案 0 :(得分:0)

我只是复制/粘贴了您的代码,删除了两个项目的setSizeHint()函数调用,并添加了一些代码。这是工作代码:

QListWidgetItem* newItem1 = new QListWidgetItem();
newItem1->setText("short text");
ui->listWidget->addItem(newItem1); 
QListWidgetItem* newItem2 = new QListWidgetItem();
newItem2->setText("this is a very long text");
ui->listWidget->addItem(newItem2);
ui->listWidget->setFixedSize(ui->listWidget->sizeHintForColumn(0) + ui->listWidget->frameWidth() * 2,
                             ui->listWidget->sizeHintForRow(0) * ui->listWidget->count() + 2 * ui->listWidget->frameWidth());

enter image description here

如您所见,两个项目都完全显示。

答案 1 :(得分:0)

实际上,我意外地为QListWidget启用了UniformItemSizes。当我禁用它时,QListWidgetItems会根据其内容自动调整大小。