feat:完成历史事件的分页查看
This commit is contained in:
parent
ea9970230a
commit
9d82145e6d
|
|
@ -82,7 +82,7 @@ public:
|
|||
,width(w){}
|
||||
};
|
||||
|
||||
explicit AlarmEventDataModel(QObject* parent = nullptr);
|
||||
explicit AlarmEventDataModel(AlarmDataMode mode, QObject* parent = nullptr);
|
||||
~AlarmEventDataModel();
|
||||
|
||||
//QAbstractTableModel接口实现
|
||||
|
|
@ -96,13 +96,17 @@ public:
|
|||
|
||||
//自定义功能函数
|
||||
const QVector<SectionData> headerData() const {return m_headerData;}
|
||||
void setMode(AlarmDataMode mode) {m_dataMode = mode;}
|
||||
void setMaxRealTimeEvents(int value) {m_maxRealTimeEvents = value;}
|
||||
//void setMode(AlarmDataMode mode);
|
||||
void setMaxRealTimeEvents(int value);
|
||||
const int getMaxRealTimeEvents() const {return m_maxRealTimeEvents;}
|
||||
void setFilter(const AlarmEventDataFilter& filter);
|
||||
void refresh();
|
||||
|
||||
//void setPageSize(int);
|
||||
bool setCurrentPage(int);
|
||||
void previousPage();
|
||||
void nextPage();
|
||||
void firstPage();
|
||||
void lastPage();
|
||||
|
||||
private slots:
|
||||
void onTimeoutSimulateData();
|
||||
|
|
@ -173,10 +177,10 @@ class AlarmEventDataView : public QWidget
|
|||
Q_OBJECT
|
||||
|
||||
public:
|
||||
AlarmEventDataView(QWidget* parent = nullptr);
|
||||
AlarmEventDataView(AlarmDataMode mode, QWidget* parent = nullptr);
|
||||
~AlarmEventDataView();
|
||||
|
||||
void setModelMode(AlarmDataMode, int maxRealTimeEvents = 5);
|
||||
//void setModelMode(AlarmDataMode, int maxRealTimeEvents = 5);
|
||||
|
||||
public slots:
|
||||
void onBtnClicked_Confirm(const QModelIndex& index);
|
||||
|
|
|
|||
|
|
@ -86,11 +86,21 @@ bool AlarmEventDataFilter::isEmpty()
|
|||
|
||||
|
||||
///////------AlarmEventDataModel-----
|
||||
AlarmEventDataModel::AlarmEventDataModel(QObject* parent)
|
||||
AlarmEventDataModel::AlarmEventDataModel(AlarmDataMode mode, QObject* parent)
|
||||
: QAbstractTableModel(parent)
|
||||
,m_maxRealTimeEvents(5)
|
||||
, m_dataMode(mode)
|
||||
, m_maxRealTimeEvents(5)
|
||||
{
|
||||
m_dataMode = Historical;
|
||||
if(m_dataMode == RealTime) //创建几个“空事件”来初始化表格
|
||||
{
|
||||
for(int i = 0; i < m_maxRealTimeEvents; ++i)
|
||||
{
|
||||
EventData event;
|
||||
event.id = ""; //空事件
|
||||
m_displayEvents.append(event);
|
||||
}
|
||||
}
|
||||
|
||||
m_paginationInfo.entriesPerPage = 100;
|
||||
m_paginationInfo.currentPage = 1;
|
||||
m_paginationInfo.totalEntries = 0;
|
||||
|
|
@ -125,6 +135,8 @@ QVariant AlarmEventDataModel::data(const QModelIndex& index, int role) const
|
|||
int col = index.column();
|
||||
int globalRow = (m_paginationInfo.currentPage - 1) * m_paginationInfo.entriesPerPage + row;
|
||||
const EventData& event = m_displayEvents.at(row);
|
||||
if(event.id.isEmpty()) //无效事件
|
||||
return QVariant();
|
||||
//EventData event = m_displayEvents[row];
|
||||
|
||||
switch (role)
|
||||
|
|
@ -238,6 +250,45 @@ void AlarmEventDataModel::iniHeaderData()
|
|||
m_headerData.emplace_back(SectionData("操作", 172, Operation));
|
||||
}
|
||||
|
||||
/*void AlarmEventDataModel::setMode(AlarmDataMode mode)
|
||||
{
|
||||
if(m_dataMode == mode)
|
||||
return;
|
||||
|
||||
m_dataMode = mode;
|
||||
if(mode == Historical)
|
||||
{}
|
||||
else
|
||||
{}
|
||||
}*/
|
||||
|
||||
void AlarmEventDataModel::setMaxRealTimeEvents(int count)
|
||||
{
|
||||
if(m_dataMode == Historical) //实时列表初始化表格
|
||||
{
|
||||
if(m_maxRealTimeEvents == count)
|
||||
return;
|
||||
else if(m_maxRealTimeEvents < count)
|
||||
{
|
||||
int DValue = count - m_maxRealTimeEvents;
|
||||
for(int i = 0; i < DValue; ++i)
|
||||
m_displayEvents.removeLast();
|
||||
}
|
||||
else if(m_maxRealTimeEvents > count)
|
||||
{
|
||||
int DValue = m_maxRealTimeEvents - count;
|
||||
for(int i = 0; i < DValue; ++i)
|
||||
{
|
||||
EventData event;
|
||||
event.id = ""; //空事件
|
||||
m_displayEvents.append(event);
|
||||
}
|
||||
}
|
||||
|
||||
m_maxRealTimeEvents = count;
|
||||
}
|
||||
}
|
||||
|
||||
void AlarmEventDataModel::setFilter(const AlarmEventDataFilter& filter)
|
||||
{
|
||||
m_currentFilter = filter;
|
||||
|
|
@ -358,7 +409,7 @@ void AlarmEventDataModel::onRealTimeEventReceived(const EventData& event)
|
|||
if(m_displayEvents.size() >= m_maxRealTimeEvents)
|
||||
m_displayEvents.removeLast();
|
||||
|
||||
//按照时间顺序排序(从小到大)
|
||||
//按照时间顺序排序(从后到前)
|
||||
int insertPosition = 0;
|
||||
for(; insertPosition < m_displayEvents.size(); ++insertPosition)
|
||||
{
|
||||
|
|
@ -374,6 +425,52 @@ void AlarmEventDataModel::onRealTimeEventReceived(const EventData& event)
|
|||
endResetModel();
|
||||
}
|
||||
|
||||
bool AlarmEventDataModel::setCurrentPage(int page)
|
||||
{
|
||||
if(m_paginationInfo.currentPage != page && page > 0 && page <= m_paginationInfo.totalPages)
|
||||
{
|
||||
m_paginationInfo.currentPage = page;
|
||||
updateCurPageData();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void AlarmEventDataModel::previousPage()
|
||||
{
|
||||
if(m_paginationInfo.currentPage == 1)
|
||||
return;
|
||||
|
||||
int page = m_paginationInfo.currentPage;
|
||||
setCurrentPage(--page);
|
||||
}
|
||||
|
||||
void AlarmEventDataModel::nextPage()
|
||||
{
|
||||
if(m_paginationInfo.currentPage == m_paginationInfo.totalPages)
|
||||
return;
|
||||
|
||||
int page = m_paginationInfo.currentPage;
|
||||
setCurrentPage(++page);
|
||||
}
|
||||
|
||||
void AlarmEventDataModel::firstPage()
|
||||
{
|
||||
if(m_paginationInfo.currentPage == 1)
|
||||
return;
|
||||
|
||||
setCurrentPage(1);
|
||||
}
|
||||
|
||||
void AlarmEventDataModel::lastPage()
|
||||
{
|
||||
if(m_paginationInfo.currentPage == m_paginationInfo.totalPages)
|
||||
return;
|
||||
|
||||
setCurrentPage(m_paginationInfo.totalPages);
|
||||
}
|
||||
|
||||
|
||||
///////------AlarmEventDataDelegate-----
|
||||
AlarmEventDataDelegate::AlarmEventDataDelegate(QTableView* view, QObject* parent)
|
||||
|
|
@ -426,7 +523,9 @@ void AlarmEventDataDelegate::paint(QPainter* painter, const QStyleOptionViewItem
|
|||
painter->restore();
|
||||
|
||||
//绘制操作按钮
|
||||
if(index.column() == m_tableView->model()->columnCount() - 1)
|
||||
QModelIndex numIndex = m_tableView->model()->index(index.row(), 0);
|
||||
QString number = numIndex.data(Qt::DisplayRole).toString();
|
||||
if(!number.isEmpty() && index.column() == m_tableView->model()->columnCount() - 1)
|
||||
{
|
||||
int nMarginH = 10;
|
||||
int nMarginV = 5;
|
||||
|
|
@ -539,7 +638,7 @@ bool AlarmEventDataDelegate::editorEvent(QEvent* event, QAbstractItemModel* mode
|
|||
|
||||
|
||||
///////------AlarmEventDataView-----
|
||||
AlarmEventDataView::AlarmEventDataView(QWidget* parent)
|
||||
AlarmEventDataView::AlarmEventDataView(AlarmDataMode mode, QWidget* parent)
|
||||
: QWidget(parent)
|
||||
{
|
||||
m_tableView = new QTableView(this);
|
||||
|
|
@ -549,7 +648,7 @@ AlarmEventDataView::AlarmEventDataView(QWidget* parent)
|
|||
m_tableView->setShowGrid(false);
|
||||
//m_tableView->setStyleSheet("QHeaderView{background-color: rgb(40, 40, 40);} QHeaderView::section{background-color:transparent;}");
|
||||
|
||||
m_tableModel = new AlarmEventDataModel(this);
|
||||
m_tableModel = new AlarmEventDataModel(mode, this);
|
||||
m_tableView->setModel(m_tableModel);
|
||||
//设置表头
|
||||
const QVector<AlarmEventDataModel::SectionData> headerData = m_tableModel->headerData();
|
||||
|
|
@ -576,7 +675,7 @@ AlarmEventDataView::AlarmEventDataView(QWidget* parent)
|
|||
AlarmEventDataView::~AlarmEventDataView()
|
||||
{}
|
||||
|
||||
void AlarmEventDataView::setModelMode(AlarmDataMode mode, int maxRealTimeEvents)
|
||||
/*void AlarmEventDataView::setModelMode(AlarmDataMode mode, int maxRealTimeEvents)
|
||||
{
|
||||
if(m_tableModel)
|
||||
{
|
||||
|
|
@ -584,7 +683,7 @@ void AlarmEventDataView::setModelMode(AlarmDataMode mode, int maxRealTimeEvents)
|
|||
if(mode == RealTime)
|
||||
m_tableModel->setMaxRealTimeEvents(maxRealTimeEvents);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
void AlarmEventDataView::onBtnClicked_Confirm(const QModelIndex& index)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -16,8 +16,7 @@ AlarmEventRealTimeDock::AlarmEventRealTimeDock(QWidget* parent)
|
|||
m_isInAnimation = false;
|
||||
m_curState = "collapse";
|
||||
|
||||
m_tableView = new AlarmEventDataView(this);
|
||||
m_tableView->setModelMode(RealTime);
|
||||
m_tableView = new AlarmEventDataView(RealTime, this);
|
||||
ui->tableLayout->addWidget(m_tableView);
|
||||
|
||||
m_animation = new QPropertyAnimation(this, "geometry");
|
||||
|
|
|
|||
Loading…
Reference in New Issue