更新UI
This commit is contained in:
@@ -4,7 +4,10 @@
|
||||
#include <QLabel>
|
||||
#include <QPixmap>
|
||||
#include <QVBoxLayout>
|
||||
|
||||
#include <QTabWidget>
|
||||
#include <QFileInfo>
|
||||
#include <QPushButton>
|
||||
#include <Threads/MultiCoreManager.h>
|
||||
class ReadOnlyItem : public QTableWidgetItem
|
||||
{
|
||||
public:
|
||||
@@ -20,7 +23,7 @@ P12_NetworkPage::P12_NetworkPage(QWidget *parent) :
|
||||
ui(new Ui::P12_NetworkPage)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
QTimer::singleShot(10, this, &P12_NetworkPage::WinInit);
|
||||
QTimer::singleShot(1000, this, &P12_NetworkPage::WinInit);
|
||||
}
|
||||
|
||||
P12_NetworkPage::~P12_NetworkPage()
|
||||
@@ -30,13 +33,36 @@ P12_NetworkPage::~P12_NetworkPage()
|
||||
void P12_NetworkPage::WinInit()
|
||||
{
|
||||
ui->MainWidget->setCurrentIndex(0);
|
||||
mCsvConfig[0].FileName = ConfigurationPath + "画面配置/UI_IO扩展页面1_配置.csv";
|
||||
mCsvConfig[1].FileName = ConfigurationPath + "画面配置/UI_IO扩展页面2_配置.csv";
|
||||
mCsvConfig[2].FileName = ConfigurationPath + "画面配置/UI_IO扩展页面3_配置.csv";
|
||||
gPageIndexStr12 = "P12.00";
|
||||
TableViewInit(ui->TableWidget_PLC_1,&mCsvConfig[0]);
|
||||
TableViewInit(ui->TableWidget_PLC_2,&mCsvConfig[1]);
|
||||
TableViewInit(ui->TableWidget_PLC_3,&mCsvConfig[2]);
|
||||
gPageIndexStr12 = "P12.0";
|
||||
for (uint8_t i=0;i<9;i++) {
|
||||
QString FileName = QString("画面配置/UI_IO扩展页面%1_配置.csv").arg(i+1);
|
||||
QString TableWidgetObjName = QString("TableWidget_PLC_%1").arg(i+1);
|
||||
mCsvConfig[i].FileName = ConfigurationPath + FileName;
|
||||
QFileInfo checkFile(mCsvConfig[i].FileName);
|
||||
if (checkFile.exists() && checkFile.isFile()) {
|
||||
QTableWidget* TableWidget = findChild<QTableWidget*>(TableWidgetObjName);
|
||||
if(TableWidget)
|
||||
TableViewInit(TableWidget,&mCsvConfig[i]);
|
||||
}
|
||||
//gPageName["P12.0"])
|
||||
QPushButton* Button = findChild<QPushButton*>(QString("But_Network_%1").arg(i));
|
||||
if(Button){
|
||||
Button->setText(gPageName["P12."+QString::number(i)]);
|
||||
}
|
||||
}
|
||||
// mCsvConfig[0].FileName = ConfigurationPath + "画面配置/UI_IO扩展页面1_配置.csv";
|
||||
// mCsvConfig[1].FileName = ConfigurationPath + "画面配置/UI_IO扩展页面2_配置.csv";
|
||||
// mCsvConfig[2].FileName = ConfigurationPath + "画面配置/UI_IO扩展页面3_配置.csv";
|
||||
// mCsvConfig[3].FileName = ConfigurationPath + "画面配置/UI_IO扩展页面4_配置.csv";
|
||||
// mCsvConfig[4].FileName = ConfigurationPath + "画面配置/UI_IO扩展页面5_配置.csv";
|
||||
// mCsvConfig[5].FileName = ConfigurationPath + "画面配置/UI_IO扩展页面6_配置.csv";
|
||||
// mCsvConfig[6].FileName = ConfigurationPath + "画面配置/UI_IO扩展页面7_配置.csv";
|
||||
// mCsvConfig[7].FileName = ConfigurationPath + "画面配置/UI_IO扩展页面8_配置.csv";
|
||||
// mCsvConfig[8].FileName = ConfigurationPath + "画面配置/UI_IO扩展页面9_配置.csv";
|
||||
|
||||
// TableViewInit(ui->TableWidget_PLC_1,&mCsvConfig[0]);
|
||||
// TableViewInit(ui->TableWidget_PLC_2,&mCsvConfig[1]);
|
||||
// TableViewInit(ui->TableWidget_PLC_3,&mCsvConfig[2]);
|
||||
|
||||
//所用定时器初始化
|
||||
QTimer* UIRefresh_Timer = new QTimer(this);
|
||||
@@ -87,8 +113,8 @@ void P12_NetworkPage::TableViewInit( QTableWidget *tw,tsCsvConfigText *CCT){
|
||||
tw->setItem(i,8,new ReadOnlyItem(CCT->PinName[i+32]));
|
||||
tw->setItem(i,9,new ReadOnlyItem(CCT->ShowText[i+32]));
|
||||
|
||||
tw->setItem(i,12,new ReadOnlyItem(CCT->PinName[i+32]));
|
||||
tw->setItem(i,13,new ReadOnlyItem(CCT->ShowText[i+32]));
|
||||
tw->setItem(i,12,new ReadOnlyItem(CCT->PinName[i+48]));
|
||||
tw->setItem(i,13,new ReadOnlyItem(CCT->ShowText[i+48]));
|
||||
}
|
||||
}
|
||||
void P12_NetworkPage::TableViewDataUpdate( QTableWidget *tw,tsCsvConfigText *CCT){
|
||||
@@ -96,26 +122,24 @@ void P12_NetworkPage::TableViewDataUpdate( QTableWidget *tw,tsCsvConfigText *CCT
|
||||
for (uint8_t j=0;j<4;j++) {
|
||||
uint8_t Index = i+j*16;
|
||||
if(CCT->Type[Index] == "数值"){
|
||||
tw->setItem(i,2+j*4,new ReadOnlyItem(variantToFormattedString(gOPC_NodeValue[CCT->DataNode[Index]],2)));
|
||||
if(CCT->DataNode[Index] == "Q_OilCylindShorten.TrackR.OutPWM")
|
||||
qDebug()<<getNodeValue(CCT->DataNode[Index])<<variantToFormattedString(getNodeValue(CCT->DataNode[Index]), 2);
|
||||
auto *item = new ReadOnlyItem(variantToFormattedString(getNodeValue(CCT->DataNode[Index]), 2));
|
||||
item->setForeground(QBrush(getColor(CCT->TColor[Index])));
|
||||
item->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
|
||||
tw->setItem(i, 2 + j * 4, item);
|
||||
}else if(CCT->Type[Index] != ""){
|
||||
QList<QString> NodeId = CCT->DataNode[Index].split("#");
|
||||
bool TmpBool = getBitOf32Data(gOPC_NodeValue[NodeId[0]].toUInt(),NodeId[1].toInt());
|
||||
tw->setItem(i,2+j*4,makeColorItem(CCT->Type[Index],TmpBool,CCT->FColor[Index],CCT->TColor[Index]));
|
||||
if(CCT->DataNode[Index].contains("#")){
|
||||
QList<QString> NodeId = CCT->DataNode[Index].split("#");
|
||||
bool TmpBool = getBitOf32Data(getNodeValue(NodeId[0]).toUInt(),NodeId[1].toInt());
|
||||
tw->setItem(i,2+j*4,makeColorItem(CCT->Type[Index],TmpBool,CCT->FColor[Index],CCT->TColor[Index]));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
inline QColor parseCssColor(const QString &css)
|
||||
{
|
||||
// 从 "color: rgb(r, g, b);" 或 "rgb(r, g, b)" 里抠出 r,g,b
|
||||
static QRegularExpression re(R"(rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\))");
|
||||
auto m = re.match(css);
|
||||
if (m.hasMatch())
|
||||
return QColor(m.captured(1).toInt(),
|
||||
m.captured(2).toInt(),
|
||||
m.captured(3).toInt());
|
||||
return Qt::black; // 兜底
|
||||
}
|
||||
|
||||
inline QTableWidgetItem *P12_NetworkPage::makeColorItem(const QString &Type,
|
||||
const bool Color,
|
||||
const QString &Fcolor,
|
||||
@@ -124,8 +148,7 @@ inline QTableWidgetItem *P12_NetworkPage::makeColorItem(const QString &Type,
|
||||
{
|
||||
QColor c;
|
||||
QString text;
|
||||
c = Color?parseCssColor(TFcolor):parseCssColor(Fcolor);
|
||||
|
||||
c = Color?getColor(TFcolor):getColor(Fcolor);
|
||||
if(Type == "输入")
|
||||
text = "●";
|
||||
else if(Type == "输出")
|
||||
@@ -144,7 +167,60 @@ inline QTableWidgetItem *P12_NetworkPage::makeColorItem(const QString &Type,
|
||||
return item;
|
||||
}
|
||||
|
||||
void P12_NetworkPage::UIRefresh_Page0(){}
|
||||
void P12_NetworkPage::UIRefresh_Page0()
|
||||
{
|
||||
// // 使用多核心管理器异步获取网络数据
|
||||
// MultiCoreManager::instance()->submitTask([this]() {
|
||||
// // 准备数据容器
|
||||
// QMap<QString, QVariant> networkData;
|
||||
|
||||
// // 异步读取网络状态数据
|
||||
// networkData["NetworkStatus"] = getNodeValue("PageContol.NetworkStatus");
|
||||
// networkData["RemoteNetStatus"] = getNodeValue("PageContol.RemoteNetStatus");
|
||||
// networkData["NetworkConnectBit"] = getNodeValue("PageContol.NetworkConnectBit");
|
||||
|
||||
// // 异步读取网络配置数据
|
||||
// networkData["RemoteIP"] = getNodeValue("PageContol.RemoteIP");
|
||||
// networkData["RemotePort"] = getNodeValue("PageContol.RemotePort");
|
||||
// networkData["LocalIP"] = getNodeValue("PageContol.LocalIP");
|
||||
// networkData["LocalGateway"] = getNodeValue("PageContol.LocalGateway");
|
||||
// networkData["LocalNetmask"] = getNodeValue("PageContol.LocalNetmask");
|
||||
// networkData["LocalPort"] = getNodeValue("PageContol.LocalPort");
|
||||
|
||||
// // 在主线程中更新UI
|
||||
// QMetaObject::invokeMethod(this, [this, networkData]() {
|
||||
// // 本地网络连接状态
|
||||
// ui->Label_LocalNetSta->setText(networkData["NetworkStatus"].toString());
|
||||
// ui->Label_LocalNetSta->setStyleSheet(StyleSet(ui->Label_LocalNetSta,
|
||||
// getBitOf32Data(networkData["NetworkConnectBit"].toUInt(), 0, 0),
|
||||
// BitMaps().NetSta_Styles));
|
||||
|
||||
// // 远程网络连接状态
|
||||
// ui->Label_RemoteNetSta->setText(networkData["RemoteNetStatus"].toString());
|
||||
// ui->Label_RemoteNetSta->setStyleSheet(StyleSet(ui->Label_RemoteNetSta,
|
||||
// getBitOf32Data(networkData["NetworkConnectBit"].toUInt(), 1, 0),
|
||||
// BitMaps().NetSta_Styles));
|
||||
|
||||
// // 远程IP
|
||||
// ui->LineEdit_RemoteIP->setText(networkData["RemoteIP"].toString());
|
||||
|
||||
// // 远程端口
|
||||
// ui->LineEdit_RemotePort->setText(networkData["RemotePort"].toString());
|
||||
|
||||
// // 本地IP
|
||||
// ui->LineEdit_LocalIP->setText(networkData["LocalIP"].toString());
|
||||
|
||||
// // 本地网关
|
||||
// ui->LineEdit_LocalGateway->setText(networkData["LocalGateway"].toString());
|
||||
|
||||
// // 子网掩码
|
||||
// ui->LineEdit_LocalNetmask->setText(networkData["LocalNetmask"].toString());
|
||||
|
||||
// // 本地端口
|
||||
// ui->LineEdit_LocalPort->setText(networkData["LocalPort"].toString());
|
||||
// }, Qt::QueuedConnection);
|
||||
// }, "network_page0_data_processing");
|
||||
}
|
||||
void P12_NetworkPage::UIRefresh_Page1(){
|
||||
|
||||
|
||||
@@ -162,30 +238,51 @@ void P12_NetworkPage::UIRefreshTimeOut()
|
||||
{
|
||||
if(!gPageIndexStr.contains("P12"))
|
||||
return;
|
||||
switch (ui->MainWidget->currentIndex()) {
|
||||
case 0:UIRefresh_Page0();break;
|
||||
case 1:TableViewDataUpdate(ui->TableWidget_PLC_1,&mCsvConfig[0]);break;
|
||||
case 2:TableViewDataUpdate(ui->TableWidget_PLC_2,&mCsvConfig[1]);break;
|
||||
case 3:TableViewDataUpdate(ui->TableWidget_PLC_3,&mCsvConfig[2]);break;
|
||||
case 4:UIRefresh_Page4();break;
|
||||
case 5:UIRefresh_Page5();break;
|
||||
case 6:UIRefresh_Page6();break;
|
||||
case 7:UIRefresh_Page7();break;
|
||||
case 8:UIRefresh_Page8();break;
|
||||
case 9:UIRefresh_Page9();break;
|
||||
}
|
||||
|
||||
// 使用多核心管理器异步处理数据更新
|
||||
//MultiCoreManager::instance()->submitTask([this]() {
|
||||
const int currentIndex = ui->MainWidget->currentIndex();
|
||||
|
||||
// 根据当前页面索引异步更新数据
|
||||
if (currentIndex > 0 && currentIndex < 9) {
|
||||
// 准备更新数据
|
||||
QMap<int, bool> updateFlags;
|
||||
for (int i = 1; i < 9; i++) {
|
||||
if (i == currentIndex) {
|
||||
updateFlags[i] = true;
|
||||
}
|
||||
}
|
||||
|
||||
// 在主线程中更新UI
|
||||
QMetaObject::invokeMethod(this, [this, currentIndex]() {
|
||||
switch (currentIndex) {
|
||||
case 1:TableViewDataUpdate(ui->TableWidget_PLC_1,&mCsvConfig[0]);break;
|
||||
case 2:TableViewDataUpdate(ui->TableWidget_PLC_2,&mCsvConfig[1]);break;
|
||||
case 3:TableViewDataUpdate(ui->TableWidget_PLC_3,&mCsvConfig[2]);break;
|
||||
case 4:TableViewDataUpdate(ui->TableWidget_PLC_4,&mCsvConfig[3]);break;
|
||||
case 5:TableViewDataUpdate(ui->TableWidget_PLC_5,&mCsvConfig[4]);break;
|
||||
case 6:TableViewDataUpdate(ui->TableWidget_PLC_6,&mCsvConfig[5]);break;
|
||||
case 7:TableViewDataUpdate(ui->TableWidget_PLC_7,&mCsvConfig[6]);break;
|
||||
case 8:TableViewDataUpdate(ui->TableWidget_PLC_8,&mCsvConfig[7]);break;
|
||||
}
|
||||
}, Qt::QueuedConnection);
|
||||
} else if (currentIndex == 0) {
|
||||
// 处理页面0的更新
|
||||
QMetaObject::invokeMethod(this, &P12_NetworkPage::UIRefresh_Page0, Qt::QueuedConnection);
|
||||
}
|
||||
//}, "network_page_update_task");
|
||||
}
|
||||
|
||||
void P12_NetworkPage::on_But_Network_0_clicked(){ slideToIndex(0, "P12.00");}
|
||||
void P12_NetworkPage::on_But_Network_1_clicked(){ slideToIndex(1, "P12.01");}
|
||||
void P12_NetworkPage::on_But_Network_2_clicked(){ slideToIndex(2, "P12.02");}
|
||||
void P12_NetworkPage::on_But_Network_3_clicked(){ slideToIndex(3, "P12.03");}
|
||||
void P12_NetworkPage::on_But_Network_4_clicked(){ slideToIndex(4, "P12.04");}
|
||||
void P12_NetworkPage::on_But_Network_5_clicked(){ slideToIndex(5, "P12.05");}
|
||||
void P12_NetworkPage::on_But_Network_6_clicked(){ slideToIndex(6, "P12.06");}
|
||||
void P12_NetworkPage::on_But_Network_7_clicked(){ slideToIndex(7, "P12.07");}
|
||||
void P12_NetworkPage::on_But_Network_8_clicked(){ slideToIndex(8, "P12.08");}
|
||||
void P12_NetworkPage::on_But_Network_9_clicked(){ slideToIndex(9, "P12.09");}
|
||||
void P12_NetworkPage::on_But_Network_0_clicked(){ slideToIndex(0, "P12.0");}
|
||||
void P12_NetworkPage::on_But_Network_1_clicked(){ slideToIndex(1, "P12.1");}
|
||||
void P12_NetworkPage::on_But_Network_2_clicked(){ slideToIndex(2, "P12.2");}
|
||||
void P12_NetworkPage::on_But_Network_3_clicked(){ slideToIndex(3, "P12.3");}
|
||||
void P12_NetworkPage::on_But_Network_4_clicked(){ slideToIndex(4, "P12.4");}
|
||||
void P12_NetworkPage::on_But_Network_5_clicked(){ slideToIndex(5, "P12.5");}
|
||||
void P12_NetworkPage::on_But_Network_6_clicked(){ slideToIndex(6, "P12.6");}
|
||||
void P12_NetworkPage::on_But_Network_7_clicked(){ slideToIndex(7, "P12.7");}
|
||||
void P12_NetworkPage::on_But_Network_8_clicked(){ slideToIndex(8, "P12.8");}
|
||||
void P12_NetworkPage::on_But_Network_9_clicked(){ slideToIndex(9, "P12.9");}
|
||||
|
||||
|
||||
void P12_NetworkPage::on_MainWidget_currentChanged(int arg1)
|
||||
|
||||
Reference in New Issue
Block a user