【发布时间】:2018-01-05 03:43:58
【问题描述】:
我已经创建了一个代表,并且我能够对齐表格上的数字并以粗体显示。我想强制他们保留两位小数,例如 1.2 应该显示为 1.20。 这是 delagete 的标题:
#ifndef TOTALDELEGATE_H
#define TOTALDELEGATE_H
#include <QObject>
#include <QStyledItemDelegate>
class TotalDelegate : public QStyledItemDelegate
{
public:
TotalDelegate();
virtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const Q_DECL_OVERRIDE;
};
#endif // TOTALDELEGATE_H
这里是实现:
#include "totaldelegate.h"
TotalDelegate::TotalDelegate()
{
}
void TotalDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
if(!index.isValid()) return;
QFont font=option.font;
font.setBold(true);
QStyleOptionViewItem localOption(option);
localOption.font=font;
localOption.displayAlignment=Qt::AlignRight;
QStyledItemDelegate::paint(painter,localOption,index);
}
对于如何控制对齐方式仍然有点迷茫,因此它强制使用两位小数。我也想知道如何更改背景颜色。 谢谢您的帮助。 这是模型:
body = new QSqlTableModel(parent,data->m_db);
body->setTable("C"+QString::number(markTime.toSecsSinceEpoch()));
body->select();
ui->bodyView->setModel(body);
ui->bodyView->sortByColumn(0,Qt::AscendingOrder);
ui->bodyView->setColumnWidth(0,30);
ui->bodyView->setColumnWidth(1,80);
for(int x=2;x<ui->columns->maximum()+2;x++) ui->bodyView->setColumnWidth(x,40);
ui->bodyView->setEditTriggers(QAbstractItemView::NoEditTriggers);
ui->bodyView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
ui->bodyView->setAlternatingRowColors(true);
// // *************** Testing ********************
ui->bodyView->setItemDelegateForRow(10,new TotalDelegate);
// // *****************Testing ********************
ui->bodyView->show();
【问题讨论】:
-
你的型号是什么?
-
我刚刚用模型更新了帖子
-
您希望所有数字都有小数,还是只有那些已经有小数的数字?
-
@eyllanesc - 是的,我希望所有数字都显示小数。
-
@Scheff - QTableView 中显示的所有数据都来自 SQL 模型。数据库中的所有列都设置为float,“C”+QString::number(markTime.toSecsSinceEpoch()) 仅用于序列化临时工作表的名称。 markTime 是一个 DateTime 对象。
标签: c++ qt qtableview qsqltablemodel