0

我正在将 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 文本没有完全显示。它只显示几个字符,然后“...”作为文本省略。如何在没有省略号的情况下显示完整的文本?我想根据项目数据的大小设置大小而不设置任何常数。

4

2 回答 2

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

在此处输入图像描述

如您所见,这两个项目均已完全显示。

于 2019-06-12T11:49:33.370 回答
0

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

于 2019-06-16T06:07:24.960 回答