QListWidgetItem не отображается правильно - PullRequest
0 голосов
/ 21 января 2019

Я создаю хитрость CustomWidgets в QListWidget.Пока это работает хорошо.Проблема возникает, когда я перемещаю вертикальную полосу прокрутки вниз и хочу отобразить элементы, которые ранее не были видны.Затем они вставляются в виде прозрачных прямоугольников, я могу щелкнуть их и ответить на щелчки, но они не нарисованы.Они остаются прозрачными!

Я вставляю картинку, чтобы получить общее представление о проблеме: enter image description here

В моем QListWidget я пытаюсь перекрасить его, но это нене работает:

QListWidget::verticalScrollbarValueChanged(value);
auto item = this->itemAt(QPoint(24, value));
if (!item)
{
    return;
}

auto widget = this->itemWidget(item);
if (!widget)
{
    return;
}

//    widget->resize(widget->size());
//    widget->repaint();
widget->update();

Что я могу сделать?Спасибо за помощь!

РЕДАКТИРОВАТЬ: В соответствии с просьбой Мартина, я вставляю здесь подпрограмму, которая показывает добавление элементов:

void ListControl::AddCustomWidget(QWidget* customWidget, const QSize& size, bool forceSize)
{
    if (forceSize)
    {
        customWidget->adjustSize();
    }

    auto displaySize = customWidget->size();
    auto width = size.width();
    auto height = size.height();

    auto item = new QListWidgetItem(this);
    this->addItem(item);

    if (width >= 0)
    {
        displaySize.setWidth(width);
    }
    else
    {
        displaySize.setWidth(displaySize.width() - (this->verticalScrollBar()->width() + this->rightSpace));
    }

    if (height >= 0)
    {
        displaySize.setHeight(height);
    }

    item->setSizeHint(displaySize);
    this->setItemWidget(item, customWidget);
}
...