首页 > 解决方案 > 有没有办法将 QTableWidget 中的整数数据显示为十六进制?

问题描述

我有一个继承自QTableWidget被调用的类,InsnTable并且它的一个列具有整数数据...我想将整数显示为 32 位十六进制值。有没有简单的方法可以做到这一点?我想将数据存储为QStrings 而不是int并将整数相应地转换为十六进制......在我的情况下,问题是我必须不断搜索该列中的值,所以我必须转换每一个数据项目回到整数以便成功搜索......那么有没有办法只将此列“查看”为十六进制值,但将它们定期存储为整数?

我插入整数数据如下:

void InsnTable::insertInsn(const InsnEntry &insn)
{
    this->insertRow(this->rowCount());

    QTableWidgetItem *addrValue = new QTableWidgetItem();
    uint64_t addr = insn.addr();

    addrValue->setData(Qt::EditRole, QVariant::fromValue(addr));
    this->setItem(this->rowCount() - 1, 0, addrValue);
}

标签: c++qtqtablewidgetqtablewidgetitem

解决方案


当然:

你可以在你做的部分:

QVariant::fromValue(addr)

给出一个十六进制格式的字符串,你需要这样的东西来将一个数字转换成一个十六进制 QString

uint decimal = 255;
QString hexadecimal{};
hexadecimal.setNum(decimal,16);

最后代码看起来像:

void InsnTable::insertInsn(const InsnEntry &insn)
{
    this->insertRow(this->rowCount());

    QTableWidgetItem *addrValue = new QTableWidgetItem();
    uint64_t addr = insn.addr();
    QString hexadecimal{};
    hexadecimal.setNum(decimal,16);

    addrValue->setData(Qt::EditRole, QVariant::fromValue(hexadecimal));
    this->setItem(this->rowCount() - 1, 0, addrValue);
}

推荐阅读