修改画面载入逻辑(未成功)

This commit is contained in:
2025-09-30 17:42:22 +08:00
parent 64831f1e40
commit faf921afc7
77 changed files with 8687 additions and 937 deletions

View File

@@ -11,23 +11,14 @@ P08_AlarmPage::P08_AlarmPage(QWidget *parent) :
ui(new Ui::P08_AlarmPage)
{
ui->setupUi(this);
WinInit();
QTimer::singleShot(3000, this, &P08_AlarmPage::WinInit);
}
P08_AlarmPage::~P08_AlarmPage()
{
delete ui;
}
uint16_t OldAlarmCode = 0;
void P08_AlarmPage::WinInit()
{
OldAlarmCode = 0;
//所用定时器初始化
QTimer* UIRefresh_Timer = new QTimer(this);
connect(UIRefresh_Timer, &QTimer::timeout, this, &P08_AlarmPage::UIRefreshTimeOut);
UIRefresh_Timer->setInterval(100); // 设置定时器间隔为 1000 毫秒1 秒)
UIRefresh_Timer->start();
}
static QColor parseCssRgb(const QString &css)
{
// 正则把 "rgb(255, 0, 0)" 里的数字抠出来
@@ -39,17 +30,18 @@ static QColor parseCssRgb(const QString &css)
m.captured(3).toInt());
return Qt::black; // 解析失败就回退到黑色
}
void P08_AlarmPage::UIRefreshTimeOut()
void P08_AlarmPage::WinInit()
{
uint16_t NewAlarmCode = gOPC_NodeValue["ns=6;s=::AsGlobalPV:AlarmCode.New"] .toUInt();
if (NewAlarmCode == OldAlarmCode)
return;
ui->ListWidget_AlarmList->clear();
m_oldAlarmCode = 0;
//所用定时器初始化
QTimer* UIRefresh_Timer = new QTimer(this);
connect(UIRefresh_Timer, &QTimer::timeout, this, &P08_AlarmPage::UIRefreshTimeOut);
UIRefresh_Timer->setInterval(100); // 设置定时器间隔为 1000 毫秒1 秒)
UIRefresh_Timer->start();
#if defined(Q_OS_LINUX)
auto rows = P08_sql.selectLatest("AlarmHistory", 100);
for (const auto &row : rows) {
// 0 时间 1 报警内容 2 排查方法 3 报警代码
QDateTime t = row[0].toDateTime();
QString text1 = row[1].toString();
@@ -70,8 +62,39 @@ void P08_AlarmPage::UIRefreshTimeOut()
item->setForeground(parseCssRgb(colorStr));
ui->ListWidget_AlarmList->addItem(item);
if(m_oldAlarmCode == 0)
m_oldAlarmCode = code;
}
OldAlarmCode = NewAlarmCode;
#elif defined(Q_OS_WIN)
//qDebug() << All_SqlTable[i] << otherFields;
#endif
}
void P08_AlarmPage::UIRefreshTimeOut()
{
uint16_t NewAlarmCode = gOPC_NodeValue["ns=6;s=::AsGlobalPV:AlarmCode.New"].toUInt();
if (NewAlarmCode == m_oldAlarmCode)
return;
m_oldAlarmCode = NewAlarmCode;
// 2. 解析设备码 + 索引码
uint8_t devCode = NewAlarmCode >> 8; // 高 8 位
uint8_t idxCode = NewAlarmCode & 0xFF; // 低 8 位
// 4. 格式化字符串
QString timeStr = QDateTime::currentDateTime().toString("MM-dd hh:mm:ss");
QString alarmStr = QString("[%1] %2 %3")
.arg(timeStr)
.arg(QString::number(NewAlarmCode,16))
.arg(AlarmText[devCode][idxCode].AlarmText);
QString colorStr = AlarmText[devCode][idxCode].TextColor;
QListWidgetItem *item = new QListWidgetItem(alarmStr);
item->setForeground(parseCssRgb(colorStr));
ui->ListWidget_AlarmList->addItem(item);
}