我关注了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();
}
答案 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();
}