gpt4 book ai didi

c++ - QStandardItem 中的上标文本

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:14:27 27 4
gpt4 key购买 nike

我目前在 QStandardItem 中有文本,它是 "mm3",现在这应该是毫米立方体。有什么方法可以使它在 View 中变为 mm^3(即上标 3)?

最佳答案

你应该使用 sup具有 super 脚本的 HTML 标记。所以mm<sup>3</sup>在支持富文本的小部件中,生成 super 脚本。

在这里您应该有一个自定义委托(delegate)来显示特定列的富文本。只需创建自定义 QStyledItemDelegate .它可能像:

class RichTextDelegate: public QStyledItemDelegate
{
public:
RichTextDelegate(QObject *parent = 0);

void paint( QPainter *painter,
const QStyleOptionViewItem &option,
const QModelIndex &index ) const;
};

RichTextDelegate::RichTextDelegate(QObject *parent):QStyledItemDelegate(parent)
{
}

void RichTextDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{

if( option.state & QStyle::State_Selected )
painter->fillRect( option.rect, option.palette.highlight() );


painter->save();

QTextDocument document;
document.setTextWidth(option.rect.width());
QVariant value = index.data(Qt::DisplayRole);
if (value.isValid() && !value.isNull())
{
document.setHtml(value.toString());
painter->translate(option.rect.topLeft());
document.drawContents(painter);

}

painter->restore();
}

您应该为特定列设置项目委托(delegate):

ui->tableView->setItemDelegateForColumn(colIndex, new RichTextDelegate(ui->tableView));

现在,如果您将一行中特定列的模型文本设置为 mm<sup>3</sup> ,它将正确显示:

model->item(rowIndex,  colIndex)->setText(mm<sup>3</sup>);

关于c++ - QStandardItem 中的上标文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35761828/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com