feat:添加表头宽度的自定义功能
This commit is contained in:
parent
1419e2efc6
commit
b6cb80fe2b
|
|
@ -1,6 +1,7 @@
|
||||||
#ifndef ALARMEVENTDATAVIEW_H
|
#ifndef ALARMEVENTDATAVIEW_H
|
||||||
#define ALARMEVENTDATAVIEW_H
|
#define ALARMEVENTDATAVIEW_H
|
||||||
|
|
||||||
|
#include "alarmEventGlobal.h"
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
#include <QTableView>
|
#include <QTableView>
|
||||||
#include <QAbstractTableModel>
|
#include <QAbstractTableModel>
|
||||||
|
|
@ -11,6 +12,20 @@ class AlarmEventDataModel : public QAbstractTableModel
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
enum Column
|
||||||
|
{
|
||||||
|
Index,
|
||||||
|
ReceiveTime,
|
||||||
|
SOETime,
|
||||||
|
Station,
|
||||||
|
Bay,
|
||||||
|
Description,
|
||||||
|
Type,
|
||||||
|
Severity,
|
||||||
|
Status,
|
||||||
|
Operation,
|
||||||
|
};
|
||||||
|
|
||||||
struct RowData
|
struct RowData
|
||||||
{
|
{
|
||||||
QVector<QVariant> values;
|
QVector<QVariant> values;
|
||||||
|
|
@ -27,11 +42,13 @@ public:
|
||||||
struct SectionData
|
struct SectionData
|
||||||
{
|
{
|
||||||
int width = -1;
|
int width = -1;
|
||||||
|
Column column;
|
||||||
QString text;
|
QString text;
|
||||||
|
|
||||||
SectionData(QString t, int w)
|
SectionData(QString t, int w, Column c)
|
||||||
:text(t),
|
:text(t)
|
||||||
width(w){}
|
,column(c)
|
||||||
|
,width(w){}
|
||||||
};
|
};
|
||||||
|
|
||||||
explicit AlarmEventDataModel(QObject* parent = nullptr);
|
explicit AlarmEventDataModel(QObject* parent = nullptr);
|
||||||
|
|
@ -45,12 +62,14 @@ public:
|
||||||
int columnCount(const QModelIndex& parent = QModelIndex()) const override;
|
int columnCount(const QModelIndex& parent = QModelIndex()) const override;
|
||||||
Qt::ItemFlags flags(const QModelIndex& index) const override;
|
Qt::ItemFlags flags(const QModelIndex& index) const override;
|
||||||
|
|
||||||
|
const QVector<SectionData> headerData() const {return m_headerData;}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void iniHeaderData();
|
void iniHeaderData();
|
||||||
void updateCurPageData(); //更新当前页的数据
|
void updateCurPageData(); //更新当前页的数据
|
||||||
void updateTotalCount(); //更新总记录数
|
void updateTotalCount(); //更新总记录数
|
||||||
|
|
||||||
QVector<RowData> m_curPageData;
|
QVector<EventData> m_displayEvents;
|
||||||
QVector<SectionData> m_headerData;
|
QVector<SectionData> m_headerData;
|
||||||
PaginationInfo m_paginationInfo;
|
PaginationInfo m_paginationInfo;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -13,12 +13,19 @@ enum MainDialogMode
|
||||||
struct EventData
|
struct EventData
|
||||||
{
|
{
|
||||||
QString id;
|
QString id;
|
||||||
QString stationName;
|
QString name;
|
||||||
QString bayName;
|
int type;
|
||||||
|
int priority;
|
||||||
|
int status;
|
||||||
|
qint64 timestamp;
|
||||||
|
QString stationName; //场站名称
|
||||||
|
QString bayName; //间隔名称
|
||||||
|
QString severity;//严重性(等级)
|
||||||
|
QString from; //'station'、'platform'、'msa'
|
||||||
|
QString category; //存放订阅数据的标识,它和 timestamp 一起构成订阅从的requst
|
||||||
QString description;
|
QString description;
|
||||||
bool confirmed;
|
QVariantMap condition; //事件发生时的简单场景描述,如{'up_limitaion': 40, 'low_limitation': 10, value: 45}
|
||||||
QDateTime recivingTime;
|
QVariantMap alarmInfo; //{"driver_name":"ssu_driver_name","device_no":"ssu000","alarm_code":1,"alarm_time":2516666461000,"alarm_status":0}
|
||||||
QDateTime SOETime;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -32,19 +32,55 @@ QVariant AlarmEventDataModel::data(const QModelIndex& index, int role) const
|
||||||
int row = index.row();
|
int row = index.row();
|
||||||
int col = index.column();
|
int col = index.column();
|
||||||
int globalRow = (m_paginationInfo.currentPage - 1) * m_paginationInfo.entriesPerpage + row;
|
int globalRow = (m_paginationInfo.currentPage - 1) * m_paginationInfo.entriesPerpage + row;
|
||||||
|
const EventData& event = m_displayEvents.at(row);
|
||||||
|
//EventData event = m_displayEvents[row];
|
||||||
|
|
||||||
switch (role)
|
switch (role)
|
||||||
{
|
{
|
||||||
case Qt::DisplayRole:
|
case Qt::DisplayRole:
|
||||||
{
|
{
|
||||||
if(index.column() == 0) //第一列显示序号
|
switch(col)
|
||||||
return QString::number(globalRow + 1);
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
int dataCol = col - 1;
|
case Index:
|
||||||
const RowData& rowData = m_curPageData[row];
|
return QString::number(globalRow + 1);
|
||||||
return rowData.values.value(dataCol);
|
case ReceiveTime:
|
||||||
|
return QDateTime::fromMSecsSinceEpoch(event.timestamp).toString("yyyy-MM-dd hh:mm:ss");
|
||||||
|
case SOETime:
|
||||||
|
return QDateTime::fromMSecsSinceEpoch(event.timestamp).toString("yyyy-MM-dd hh:mm:ss");
|
||||||
|
case Station:
|
||||||
|
return event.stationName;
|
||||||
|
case Bay:
|
||||||
|
return event.bayName;
|
||||||
|
case Description:
|
||||||
|
return event.description;
|
||||||
|
case Type:
|
||||||
|
return event.type;
|
||||||
|
case Severity:
|
||||||
|
return event.severity;
|
||||||
|
case Status:
|
||||||
|
{
|
||||||
|
if(event.status < 3)
|
||||||
|
return QString("未确认");
|
||||||
|
else
|
||||||
|
return QString("已确认");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case Qt::ForegroundRole:
|
||||||
|
{
|
||||||
|
if(event.severity == "事故")
|
||||||
|
return QColor(255, 85, 0);
|
||||||
|
else if(event.severity == "异常")
|
||||||
|
return QColor(255, 170, 0);
|
||||||
|
else if(event.severity == "预警")
|
||||||
|
return QColor(0, 170, 255);
|
||||||
|
else if(event.severity == "告知")
|
||||||
|
return QColor(0, 170, 0);
|
||||||
|
|
||||||
|
if(event.status < 3)
|
||||||
|
return QColor(0, 170, 255);
|
||||||
|
else
|
||||||
|
return QColor(0, 170, 0);
|
||||||
}
|
}
|
||||||
case Qt::TextAlignmentRole:
|
case Qt::TextAlignmentRole:
|
||||||
return Qt::AlignCenter; //居中展示
|
return Qt::AlignCenter; //居中展示
|
||||||
|
|
@ -63,7 +99,7 @@ QVariant AlarmEventDataModel::headerData(int section, Qt::Orientation orientatio
|
||||||
|
|
||||||
int AlarmEventDataModel::rowCount(const QModelIndex& parent) const
|
int AlarmEventDataModel::rowCount(const QModelIndex& parent) const
|
||||||
{
|
{
|
||||||
return m_curPageData.count();
|
return m_displayEvents.count();
|
||||||
}
|
}
|
||||||
|
|
||||||
int AlarmEventDataModel::columnCount(const QModelIndex& parent) const
|
int AlarmEventDataModel::columnCount(const QModelIndex& parent) const
|
||||||
|
|
@ -84,22 +120,21 @@ Qt::ItemFlags AlarmEventDataModel::flags(const QModelIndex& index) const
|
||||||
|
|
||||||
void AlarmEventDataModel::iniHeaderData()
|
void AlarmEventDataModel::iniHeaderData()
|
||||||
{
|
{
|
||||||
m_headerData.emplace_back(SectionData("序号", 90));
|
m_headerData.emplace_back(SectionData("序号", 90, Index));
|
||||||
m_headerData.emplace_back(SectionData("接收时间", 270));
|
m_headerData.emplace_back(SectionData("接收时间", 270, ReceiveTime));
|
||||||
m_headerData.emplace_back(SectionData("SOE时间", 270));
|
m_headerData.emplace_back(SectionData("SOE时间", 270, SOETime));
|
||||||
m_headerData.emplace_back(SectionData("厂站", 200));
|
m_headerData.emplace_back(SectionData("厂站", 200, Station));
|
||||||
m_headerData.emplace_back(SectionData("间隔", 200));
|
m_headerData.emplace_back(SectionData("间隔", 200, Bay));
|
||||||
m_headerData.emplace_back(SectionData("信息", -1));
|
m_headerData.emplace_back(SectionData("信息", -1, Description));
|
||||||
m_headerData.emplace_back(SectionData("类型", 200));
|
m_headerData.emplace_back(SectionData("类型", 200, Type));
|
||||||
m_headerData.emplace_back(SectionData("等级", 150));
|
m_headerData.emplace_back(SectionData("等级", 150, Severity));
|
||||||
m_headerData.emplace_back(SectionData("确认状态", 150));
|
m_headerData.emplace_back(SectionData("确认状态", 150, Status));
|
||||||
m_headerData.emplace_back(SectionData("操作", 300));
|
m_headerData.emplace_back(SectionData("操作", 300, Operation));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void AlarmEventDataModel::updateCurPageData()
|
void AlarmEventDataModel::updateCurPageData()
|
||||||
{
|
{
|
||||||
m_curPageData.clear();
|
m_displayEvents.clear();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -153,6 +188,15 @@ AlarmEventDataView::AlarmEventDataView(QWidget* parent)
|
||||||
|
|
||||||
m_tableModel = new AlarmEventDataModel(this);
|
m_tableModel = new AlarmEventDataModel(this);
|
||||||
m_tableView->setModel(m_tableModel);
|
m_tableView->setModel(m_tableModel);
|
||||||
|
//设置表头
|
||||||
|
const QVector<AlarmEventDataModel::SectionData> headerData = m_tableModel->headerData();
|
||||||
|
for(int i = 0; i < headerData.size(); i++)
|
||||||
|
{
|
||||||
|
if(headerData.at(i).width == -1)
|
||||||
|
m_tableView->horizontalHeader()->setSectionResizeMode(i, QHeaderView::Stretch);
|
||||||
|
else
|
||||||
|
m_tableView->setColumnWidth(i, headerData.at(i).width);
|
||||||
|
}
|
||||||
|
|
||||||
m_delegate = new AlarmEventDataDelegate(m_tableView, this);
|
m_delegate = new AlarmEventDataDelegate(m_tableView, this);
|
||||||
m_tableView->setItemDelegate(m_delegate);
|
m_tableView->setItemDelegate(m_delegate);
|
||||||
|
|
|
||||||
|
|
@ -157,7 +157,7 @@ background-color: rgb(67,160,249);
|
||||||
</string>
|
</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>事件查看</string>
|
<string>历史事件</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="flat">
|
<property name="flat">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
|
|
@ -227,7 +227,7 @@ background-color: rgb(39, 102, 59);
|
||||||
font: 700 12pt "微软雅黑";
|
font: 700 12pt "微软雅黑";
|
||||||
color:rgb(250,250,250);
|
color:rgb(250,250,250);
|
||||||
text-align:right;
|
text-align:right;
|
||||||
padding-right:30px;
|
padding-right:35px;
|
||||||
background-color: rgb(200, 68, 56);
|
background-color: rgb(200, 68, 56);
|
||||||
icon-size:20px;
|
icon-size:20px;
|
||||||
icon: url(:/images/icon_alarm.png);
|
icon: url(:/images/icon_alarm.png);
|
||||||
|
|
@ -243,7 +243,7 @@ background-color: rgb(128, 43, 36);
|
||||||
</string>
|
</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>报警(0条)</string>
|
<string>实时告警</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue