mur*_*son 5 format precision qt qtableview
什么是最简单的设置固定格式方式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);
}
Run Code Online (Sandbox Code Playgroud)
有更容易的方法吗?任何帮助表示赞赏。
小智 4
QString使用QAbstractItemModel::data返回aQString::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();
}
Run Code Online (Sandbox Code Playgroud)