相关疑难解决方法(0)

如何强制QAbstractItemView重新计算项目sizeHints

我在QSplitter中有QListView和QTabWidget.QListView使用自定义模型和自定义委托.在委托中,我重新实现了paint和sizeHint方法.但是当我调整视图大小时 - 元素的高度不会重新计算.我该如何解决?示例图片:

在调整大小之前调整大小后

在谷歌我发现可以从模型中发出layoutChanged,但我只想更新当前视图,因为模型的内容不会改变.

委托代码:

void ChatItemDelegate::paint( QPainter *painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const
{
    painter->save();

    ChatItem *item = static_cast< ChatItem * >( index.internalPointer() );
    QTextDocument doc;

    doc.setHtml( item->htmlText() );
    doc.setTextWidth( option.rect.width() );

    QRect clip( 0, 0, option.rect.width(), option.rect.height() );
    painter->translate( option.rect.topLeft() );

    QColor bgColor = index.row() % 2 ? QColor( 255, 0, 0, 40 ) : QColor( 0, 255, 0, 40 );
    painter->fillRect( clip, bgColor );
    doc.drawContents( painter, clip );

    qDebug() << "paint: " …
Run Code Online (Sandbox Code Playgroud)

qt qsplitter qlistview

7
推荐指数
1
解决办法
1872
查看次数

标签 统计

qlistview ×1

qsplitter ×1

qt ×1