html接收model数据,QAbstractTableModel数据返回要显示的html代码

您可以为将显示html的视图创建委托。

class HtmlDelegate : public QItemDelegate {

public:

HtmlDelegate(QObject *parent = 0) : QItemDelegate(parent) {}

// This function is only called to paint the text

void drawDisplay(QPainter *painter, const QStyleOptionViewItem &option,

const QRect &rect, const QString &text) const

{

QTextDocument doc;

// Since the QTextDocument will do all the rendering, the color,

// and the font have to be put back inside the doc

QPalette::ColorGroup cg = option.state & QStyle::State_Enabled

? QPalette::Normal : QPalette::Disabled;

if (cg == QPalette::Normal && !(option.state & QStyle::State_Active))

cg = QPalette::Inactive;

QColor textColor = option.palette.color(cg, QPalette::Text);

doc.setDefaultStyleSheet(QString("body { color: %1}")

.arg(textColor.name()));

doc.setDefaultFont(option.font);

doc.setHtml(text);

doc.setDocumentMargin(1); // the default is 4 which is too much

painter->save();

painter->translate(rect.topLeft());

doc.drawContents(painter);

painter->restore();

}

// bold and underlined characters take more space

// so you have to redefine this function as well

// (if you have a checkbox or an icon in the item, you will have

// to include their size to the returned value)

QSize sizeHint(const QStyleOptionViewItem &option,

const QModelIndex &index) const

{

QTextDocument doc;

doc.setDefaultFont(option.font);

doc.setHtml(index.data(Qt::DisplayRole).toString());

doc.setDocumentMargin(1);

return doc.size().toSize();

}

};

然后将其分配给视图:

view->setItemDelegateForColumn(0, new HtmlDelegate(view));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值