#include "RealTimeAlarm.h" #include "ui_RealTimeAlarm.h" #include #include "QMyTableViewBtnDelegate.h" #include "AlarmDetails.h" #include "sqlitedb.h" CRealTimeAlarm::CRealTimeAlarm(QWidget *parent) : QWidget(parent), ui(new Ui::CRealTimeAlarm) { ui->setupUi(this); ui->widget_alarm->setProperty("flag", "Button"); headerStr = QObject::tr("序号,报警级别,报警内容,报警时间,报警详情"); model = new QStandardItemModel(ui->tableView); ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows); //选中行 QStringList headerList = headerStr.split(","); model->setHorizontalHeaderLabels(headerList); model->setColumnCount(headerList.size()); ui->tableView->setModel(model); ui->tableView->setColumnWidth(2, 300); ui->tableView->setColumnWidth(3, 300); ui->tableView->setAlternatingRowColors(true); ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Interactive); ui->tableView->horizontalHeader()->setSectionResizeMode(0,QHeaderView::ResizeToContents); ui->tableView->horizontalHeader()->setSectionResizeMode(4,QHeaderView::ResizeToContents); // 必须要设置此项,否则样式表的hover无法生效 ui->tableView->setMouseTracking(true); initTable(); } CRealTimeAlarm::~CRealTimeAlarm() { delete ui; } void CRealTimeAlarm::createRowItem(int Row,QVariantList RowItem) { model->setRowCount(Row+1); for (int j = 0; j < RowItem.size(); ++j) { model->setData(model->index(Row,j,QModelIndex()),RowItem.at(j)); } } void CRealTimeAlarm::initTable() { QString strTableName = "t_TriggerEvent",strSql; strSql = QString(" triggeredTime <> '' order by triggeredTime limit 0,10"); m_vecTriggerEvent = g_SqliteDB->GetTriggerEvent(strTableName,strSql); if(m_vecTriggerEvent.size() > 0){ for (int i = 0; i < m_vecTriggerEvent.size(); i++) { QVariantList strRowItem ; QString TStr = QDateTime::fromSecsSinceEpoch(m_vecTriggerEvent[i].triggeredTime).toString("yyyy-MM-dd hh:mm:ss"); strRowItem << i + 1 << m_vecTriggerEvent[i].triggeredNotification << m_vecTriggerEvent[i].triggeredFeatureName << TStr; createRowItem(i,strRowItem); } QMyTableViewBtnDelegate *m_btnDelegate = new QMyTableViewBtnDelegate(QStringList()<<"详情", this); ui->tableView->setItemDelegateForColumn(4, m_btnDelegate); connect(m_btnDelegate, SIGNAL(editData(const QModelIndex &)), this,SLOT(Details(const QModelIndex &))); }else{ QMessageBox::information(this, "提示", QString("未查询到数据!")); } } void CRealTimeAlarm::Details(const QModelIndex &index) { int row = index.row(); CAlarmDetails *dialog = new CAlarmDetails(); dialog->ViewData(m_vecTriggerEvent[row]); dialog->setWindowModality(Qt::ApplicationModal); dialog->show(); }