#include "qreportwidget.h" #include #include #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::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::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 &m_strMap) { m_str = m_strMap; } void QReportWidget::resizeEvent(QResizeEvent *event) { QWidget::resizeEvent(event); }