gpt4 book ai didi

qt - 如何设置精度和对齐方式以在 QTableView 中显示数值

转载 作者:行者123 更新时间:2023-12-01 00:54:02 27 4
gpt4 key购买 nike

会是什么 最简单的如何设置固定格式以在 QTableView 中显示数值?我需要格式化为货币 - 所以总是显示小数部分分隔符和后面的 2 位数字。可能会对齐,可能会附加一个货币名称。现在它会根据需要显示多少,例如:

  • 12.00将显示为 12 ,
  • 12.10将显示为 12.1 ,
  • 12.11将显示为 12.11 ,

  • 有没有简单的方法? SetFormatForColumn 或类似的东西?在文档中找不到关于该主题的任何真正有用的东西...
    目前我已经子类化 QStyledItemDelegate .这有效,但似乎是一个巨大的开销,因为我的子类所做的唯一一件事就是重新实现 2 个方法 - 如下:
    QString CurrencyDelegate::displayText(const QVariant & value, const QLocale & locale) const {
    return locale.toCurrencyString(value.toDouble());
    }
    void CurrencyDelegate::paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const {
    QStyleOptionViewItem myOption = option;
    (myOption.displayAlignment ^= Qt::AlignLeft) |= Qt::AlignRight;
    QStyledItemDelegate::paint(painter, myOption, index);
    }

    有更容易的方法吗?任何帮助表示赞赏。

    最佳答案

    返回 QString来自 QAbstractItemModel::data使用 QString::number

    QVariant YourTableModel::data(const QModelIndex & index, int32_t role) const
    {
    if (!index.isValid()) {
    return QVariant();
    }

    if (role == Qt::DisplayRole || role == Qt::EditRole)
    {
    switch (index.column())
    {
    case YOUR_COL:
    double theDouble = getDoubleFromModelSomewhere();
    return QString::number(theDouble, 'f', 2); // Format shows 2 decimals
    }
    }

    return QVariant();
    }

    关于qt - 如何设置精度和对齐方式以在 QTableView 中显示数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29332865/

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