有没有办法将 QTableWidget 中的整数数据显示为十六进制?

Is there a way to display integer data inside a QTableWidget as hexadecimal?

我有一个继承自 QTableWidget 的 class,名为 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);
}

确定:

你可以在你做的部分:

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);
}