我在QListWidget中建立了CustomWidgets的诡计。到目前为止,它运行良好。 当我向下移动垂直滚动条并想要显示以前不可见的项目时,会出现问题。 然后将它们插入为透明矩形,我可以单击它们并响应单击,但未绘制它们。它们保持透明!
在我的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();
我该怎么办?感谢您的帮助!
编辑: 根据Martin的要求,我在此处插入一个例程,该例程显示了附加项:
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);
}