用HTML自动换行? QTabelView和代表

时间:2014-05-22 08:57:57

标签: c++ qt delegates qtableview

我关注了this帖子,其中解释了如何使用Delegates将TableViews用于HTML。

现在这是一个扭曲,我无法弄清楚

如何制作我的html自动换行。例如,如果文本是:

  

"我是现代少将的典范,我的信息   蔬菜动物和矿物质,我知道英格兰的kinges和我引用   从马拉松到滑铁卢的历史性战斗   分类..."

目前,所有内容都显示在tableView单元格的一行上。有没有办法让我自言自语? 我有以下绘画方法

void HTMLDelegate::paint(QPainter* painter, const QStyleOptionViewItem & option, const QModelIndex &index) const
{
    QStyleOptionViewItemV4 options = option;
    initStyleOption(&options, index);

    painter->save();

    QTextDocument doc;
    doc.setHtml(options.text);

    options.text = "";
    options.widget->style()->drawControl(QStyle::CE_ItemViewItem, &options, painter);

    painter->translate(options.rect.left(), options.rect.top()+0);


    QRect clip(0, 0, options.rect.width(), options.rect.height());
    doc.drawContents(painter, clip);

    painter->restore();
}

1 个答案:

答案 0 :(得分:4)

请注意表演会很糟糕。

void HTMLDelegate::paint(QPainter* painter, const QStyleOptionViewItem & option, const QModelIndex &index) const
{
    QStyleOptionViewItemV4 options = option;
    initStyleOption(&options, index);

    painter->save();

    QTextDocument doc;
    QTextOption textOption(doc.defaultTextOption());
    textOption.setWrapMode(QTextOption::WordWrap);
    doc.setDefaultTextOption(textOption);

    doc.setHtml(options.text);
    doc.setTextWidth(options.rect.width());

    options.text = "";
    options.widget->style()->drawControl(QStyle::CE_ItemViewItem, &options, painter);

    painter->translate(options.rect.left(), options.rect.top()+0);


    QRect clip(0, 0, options.rect.width(), options.rect.height());
    doc.drawContents(painter, clip);

    painter->restore();
}