|
|
|
|
|
#include "qreportwidget.h"
|
|
|
|
|
|
#include <QHeaderView>
|
|
|
|
|
|
#include <QScrollBar>
|
|
|
|
|
|
#pragma execution_character_set("utf-8")
|
|
|
|
|
|
QReportWidget::QReportWidget(QString str /*=QString()*/, QWidget *parent/*=0*/) : QWidget(parent)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_Title = str;
|
|
|
|
|
|
m_titleLabel = new QLabel;
|
|
|
|
|
|
m_TableView = new QTableView;
|
|
|
|
|
|
m_tableViewModel = new QStandardItemModel;
|
|
|
|
|
|
|
|
|
|
|
|
m_TableView->setAlternatingRowColors(true);
|
|
|
|
|
|
m_TableView->setSelectionBehavior(QAbstractItemView::SelectRows);
|
|
|
|
|
|
m_TableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
|
|
|
|
|
|
m_TableView->setWordWrap(true);
|
|
|
|
|
|
m_TableView->resizeColumnsToContents();
|
|
|
|
|
|
m_TableView->resizeRowsToContents();
|
|
|
|
|
|
//m_TableView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);//自适应行宽
|
|
|
|
|
|
m_TableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
|
|
|
|
|
m_TableView->horizontalScrollBar()->setEnabled(false);
|
|
|
|
|
|
m_TableView->setMinimumHeight(100);
|
|
|
|
|
|
QVBoxLayout *VBox = new QVBoxLayout;
|
|
|
|
|
|
VBox->addWidget(m_titleLabel);
|
|
|
|
|
|
VBox->addWidget(m_TableView);
|
|
|
|
|
|
setLayout(VBox);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
QReportWidget::~QReportWidget()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (m_TableView){
|
|
|
|
|
|
delete m_TableView;
|
|
|
|
|
|
m_TableView = NULL;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (m_tableViewModel){
|
|
|
|
|
|
m_tableViewModel->clear();
|
|
|
|
|
|
delete m_tableViewModel;
|
|
|
|
|
|
m_tableViewModel = NULL;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void QReportWidget::UpdateTableView()
|
|
|
|
|
|
{
|
|
|
|
|
|
m_titleLabel->setText(m_Title);
|
|
|
|
|
|
QStandardItemModel *m_tableViewModelTmp = new QStandardItemModel;
|
|
|
|
|
|
m_TableView->setModel(m_tableViewModelTmp);
|
|
|
|
|
|
QFont font;
|
|
|
|
|
|
font.setPixelSize(14);
|
|
|
|
|
|
m_titleLabel->setFont(font);
|
|
|
|
|
|
m_tableViewModel->clear();
|
|
|
|
|
|
m_tableViewModel->setHorizontalHeaderItem(0, new QStandardItem(tr("型号")));
|
|
|
|
|
|
m_tableViewModel->setHorizontalHeaderItem(1, new QStandardItem(tr("数量")));
|
|
|
|
|
|
int nIndex = 0;
|
|
|
|
|
|
for (QMap<QString, int>::iterator its = m_str.begin(); its != m_str.end(); ++its)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_tableViewModel->setItem(nIndex, 0, new QStandardItem(its.key()));
|
|
|
|
|
|
m_tableViewModel->setItem(nIndex, 1, new QStandardItem(QString::number(*its)));
|
|
|
|
|
|
nIndex++;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (m_listStr.size() > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int m_Index = 0; m_Index < m_listStr.size(); m_Index++)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_tableViewModel->setItem(nIndex, 0, new QStandardItem(m_listStr.at(m_Index).m_str));
|
|
|
|
|
|
m_tableViewModel->setItem(nIndex, 1, new QStandardItem(QString::number(m_listStr.at(m_Index).num)));
|
|
|
|
|
|
nIndex++;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
m_TableView->setModel(m_tableViewModel);
|
|
|
|
|
|
delete m_tableViewModelTmp;
|
|
|
|
|
|
m_tableViewModelTmp = NULL;
|
|
|
|
|
|
}
|
|
|
|
|
|
void QReportWidget::drawTexts(QPainter* painter)
|
|
|
|
|
|
{
|
|
|
|
|
|
QDateTime cuttrnt_date_time = QDateTime::currentDateTime();
|
|
|
|
|
|
QString current_date = cuttrnt_date_time.toString("yyyy-MM-dd hh:mm:ss ddd");
|
|
|
|
|
|
|
|
|
|
|
|
QPoint point(10, 14);
|
|
|
|
|
|
QFont font;
|
|
|
|
|
|
font.setPixelSize(14);
|
|
|
|
|
|
painter->setFont(font);
|
|
|
|
|
|
//if (!m_Title.isEmpty())
|
|
|
|
|
|
{
|
|
|
|
|
|
// return;
|
|
|
|
|
|
}
|
|
|
|
|
|
QTextOption option(Qt::AlignLeft | Qt::AlignVCenter);
|
|
|
|
|
|
option.setWrapMode(QTextOption::WordWrap);
|
|
|
|
|
|
|
|
|
|
|
|
painter->drawText(rect(), m_Title, option);
|
|
|
|
|
|
if (m_str.size() > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
int y = point.y();
|
|
|
|
|
|
point.setY(y + 20);
|
|
|
|
|
|
painter->drawText(point, tr("编号"));
|
|
|
|
|
|
point.setX(10 + 2 * 28);
|
|
|
|
|
|
painter->drawText(point, tr("型号"));
|
|
|
|
|
|
point.setX(10 + 2 * 28 + 3 * 28);
|
|
|
|
|
|
painter->drawText(point, tr("数量"));
|
|
|
|
|
|
int i = 1;
|
|
|
|
|
|
point.setX(10);
|
|
|
|
|
|
font.setPixelSize(14);
|
|
|
|
|
|
painter->setFont(font);
|
|
|
|
|
|
for (QMap<QString, int>::iterator its = m_str.begin(); its != m_str.end(); ++its)
|
|
|
|
|
|
{
|
|
|
|
|
|
int y = point.y();
|
|
|
|
|
|
point.setX(10);
|
|
|
|
|
|
point.setY(y + 20);
|
|
|
|
|
|
painter->drawText(point, QString::number(i++));
|
|
|
|
|
|
point.setX(10 + 2 * 28);
|
|
|
|
|
|
painter->drawText(point, its.key());
|
|
|
|
|
|
point.setX(10 + 2 * 28 + 3 * 28);
|
|
|
|
|
|
painter->drawText(point, QString::number(*its));
|
|
|
|
|
|
}
|
|
|
|
|
|
if (m_listStr.size() > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int nIndex = 0; nIndex < m_listStr.size(); nIndex++)
|
|
|
|
|
|
{
|
|
|
|
|
|
int y = point.y();
|
|
|
|
|
|
point.setX(10);
|
|
|
|
|
|
point.setY(y + 20);
|
|
|
|
|
|
painter->drawText(point, QString::number(i++));
|
|
|
|
|
|
point.setX(10 + 2 * 28);
|
|
|
|
|
|
painter->drawText(point, m_listStr.at(nIndex).m_str);
|
|
|
|
|
|
point.setX(10 + 2 * 28 + 3 * 28);
|
|
|
|
|
|
painter->drawText(point, QString::number(m_listStr.at(nIndex).num));
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
int y = point.y();
|
|
|
|
|
|
point.setY(y + 20);
|
|
|
|
|
|
painter->drawText(point, tr("请选择对应时间并查询数据!"));
|
|
|
|
|
|
}
|
|
|
|
|
|
//painter->drawLine(80, 100, 650, 500);
|
|
|
|
|
|
//painter->setPen(Qt::red);
|
|
|
|
|
|
//painter->drawRect(10, 10, 100, 400);
|
|
|
|
|
|
//painter->setPen(QPen(Qt::green, 5));
|
|
|
|
|
|
//painter->setBrush(Qt::blue);
|
|
|
|
|
|
//painter->drawEllipse(50, 150, 400, 200);
|
|
|
|
|
|
}
|
|
|
|
|
|
void QReportWidget::DrawOneItem(QPainter* painter, QPoint& point, QStringList &mList)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void QReportWidget::paintEvent(QPaintEvent *event)
|
|
|
|
|
|
{
|
|
|
|
|
|
//QPainter painter_text(this);
|
|
|
|
|
|
//drawTexts(&painter_text);
|
|
|
|
|
|
//painter_text.end();
|
|
|
|
|
|
}
|
|
|
|
|
|
void QReportWidget::AppendData(QString str, int num, bool model)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (model == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_listStr.clear();
|
|
|
|
|
|
}
|
|
|
|
|
|
DataItem m_item;
|
|
|
|
|
|
m_item.m_str = str;
|
|
|
|
|
|
m_item.num = num;
|
|
|
|
|
|
m_listStr.append(m_item);
|
|
|
|
|
|
update();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void QReportWidget::setTitle(QString str)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_Title = str;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void QReportWidget::ClearData()
|
|
|
|
|
|
{
|
|
|
|
|
|
m_Title.clear();
|
|
|
|
|
|
m_listStr.clear();
|
|
|
|
|
|
m_str.clear();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Q_SLOT void QReportWidget::SetData(QMap<QString, int> &m_strMap)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_str = m_strMap;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void QReportWidget::resizeEvent(QResizeEvent *event)
|
|
|
|
|
|
{
|
|
|
|
|
|
QWidget::resizeEvent(event);
|
|
|
|
|
|
}
|