Как изменить размер QListWidgetItem в соответствии с его содержимым? - PullRequest
0 голосов
/ 12 июня 2019

Я добавляю 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 отображается не полностью.Он показывает только несколько символов, а затем "..." как текст elide.Как показать полный текст без элиды?Я хочу установить размер в соответствии с размером данных элемента без установки каких-либо постоянных чисел.

Ответы [ 2 ]

0 голосов
/ 16 июня 2019

На самом деле я случайно включилiformItemSizes для QListWidget.Когда я отключаю это, QListWidgetItems автоматически изменял размер в соответствии с его содержимым.

0 голосов
/ 12 июня 2019

Я просто скопировал / вставил ваш код, удалил вызов функции 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

Как видите, оба элемента отображаются полностью.

...