Просмотр исходного кода

上传qt更新替换显示背景为红色文字为白色

chenyuanjie 1 год назад
Родитель
Сommit
a6a21d0cde

+ 0 - 1
Qt/Qt_Test/dataupdatethread.cpp

@@ -331,7 +331,6 @@ int DataUpdateThread::isT_ACType()
 
 void DataUpdateThread::ReadMSG()
 {
-    //return;
     if(nReadType!=1&&!m_shmData)
     {
         return;

+ 23 - 4
Qt/Qt_Test/msgwidget.cpp

@@ -1,6 +1,7 @@
 #include "msgwidget.h"
 #include "ui_msgwidget.h"
 #include <QDebug>
+#include "pdu_ctrl.h"
 MSGWidget::MSGWidget(QWidget *parent) :
     QDialog(parent),
     ui(new Ui::MSGWidget)
@@ -9,6 +10,13 @@ MSGWidget::MSGWidget(QWidget *parent) :
     setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint);
     setAttribute(Qt::WA_TranslucentBackground);
     ui->label_Data->setWordWrap(true);
+    QString strBKG="";
+#ifdef RS485Type//()
+    strBKG="QWidget{background-color: rgb(0, 225, 225);color: rgb(0, 0, 0);}";
+#else
+    strBKG="QWidget{background-color: rgb(30, 30, 255);color: rgb(255, 255, 255);}";
+#endif
+    this->setStyleSheet(strBKG);
 }
 
 MSGWidget::~MSGWidget()
@@ -26,15 +34,26 @@ void MSGWidget::setFW(int nW)
     int nHightData=ui->label_Data->heightForWidth(nW-10);
     int nHight=ui->label_Warning->heightForWidth(nW-10);
     int nSum=nHightData+nHight+2;
+    // 强制处理所有待处理的事件,确保尺寸更新
+    QApplication::processEvents();
 
-    //ui->label_Data->adjustSize();
-    //ui->label_Data->updateGeometry();
     ui->label_Data->setFixedSize(nW-10,nHightData);
     ui->label_Warning->setFixedSize(nW-10,nHight);
-    //this->setFixedSize(nW,nW);
+    //this->setFixedSize(nW-5,nSum+10);
+
+    // 强制更新布局
+    this->layout()->activate();
+    this->updateGeometry();
     update(); // 可选:强制重绘整个窗口
+
     qDebug()<<"MSGWidget label_Size"<<ui->label_Data->size().width()<<"X"<<ui->label_Data->size().height();
     qDebug()<<"MSGWidget label2_Size"<<ui->label_Warning->size().width()<<"X"<<ui->label_Warning->size().height();
     qDebug()<<"MSGWidget heightForWidth"<<nHightData;
-    qDebug()<<"MSGWidget setFixedSize"<<nW<<"X"<<nSum;
+    qDebug()<<"MSGWidget setFixedSize"<<nW-5<<"X"<<nSum+10;
+    //qDebug()<<"MSGWidget FinalFixedSize"<<this->size().width()<<"X"<<this->size().width();
+    /*QTimer::singleShot(50, this, [this]() {
+        this->update();
+        ui->label_Data->update();
+        ui->label_Warning->update();
+    });*/
 }

+ 0 - 10
Qt/Qt_Test/msgwidget.ui

@@ -19,16 +19,6 @@
   <property name="windowTitle">
    <string/>
   </property>
-  <property name="styleSheet">
-   <string notr="true">QWidget
-{
-	background-color: rgb(125, 125, 125);
-}
-QLabel
-{
-	color: rgb(255, 255, 255);
-}</string>
-  </property>
   <layout class="QVBoxLayout" name="verticalLayout">
    <property name="spacing">
     <number>0</number>

+ 11 - 6
Qt/Qt_Test/pdu_ctrl.cpp

@@ -9,6 +9,7 @@
 #include <QSqlError>
 #include <QTextStream>
 #include <QRegularExpression>
+#include <QApplication>
 #define READ_INI_STR(key, default_value) (settings.contains(key) ? settings.value(key).toString() : default_value)
 #define READ_INI_INT(key, default_value) (settings.contains(key) ? settings.value(key).toInt() : default_value)
 
@@ -97,8 +98,8 @@ void pdu_Ctrl::slot_setAngel(int nAngle)
             }
             qDebug()<<"x:"<<m_pWidget->geometry().x()<<"y:"<<m_pWidget->geometry().y()<<"Width:"<<m_pWidget->size().width()<<"Height:"<<m_pWidget->size().height();
         }
-        m_pWidget->m_nAngle=nAngle;
 #endif
+        m_pWidget->m_nAngle=nAngle;
         m_pView->update();
     }
 }
@@ -134,7 +135,8 @@ void pdu_Ctrl::InitData(Widget *pWidget, QGraphicsProxyWidget *pProxy, QGraphics
 
 void pdu_Ctrl::ReadModbusInit()
 {
-    QSettings settings("/root/run/app/smartPDU.ini",QSettings::IniFormat);
+    QString appPath = QCoreApplication::applicationDirPath();
+    QSettings settings(appPath+"/smartPDU.ini",QSettings::IniFormat);
     m_nModbusAddress=READ_INI_INT("MODBUS/address",0);
     if(m_nModbusAddress>255||m_nModbusAddress<0)
     {
@@ -181,8 +183,9 @@ void pdu_Ctrl::ReadModbusInit()
 void pdu_Ctrl::SaveModbusInit()
 {
     //QSettings settings("/root/run/app/smartPDU.ini",QSettings::IniFormat);
-    updateIniValue("/root/run/app/smartPDU.ini","MODBUS","address",QString::number(m_nModbusAddress));
-    updateIniValue("/root/run/app/smartPDU.ini","MODBUS","MSType",QString::number(m_nModbusMSType));
+    QString appPath = QCoreApplication::applicationDirPath();
+    updateIniValue(appPath+"/smartPDU.ini","MODBUS","address",QString::number(m_nModbusAddress));
+    updateIniValue(appPath+"/smartPDU.ini","MODBUS","MSType",QString::number(m_nModbusMSType));
     //settings.setValue("MODBUS/address",m_nModbusAddress);
     //settings.setValue("MODBUS/MSType",m_nModbusMSType);//0:主机,1:从机
     QSqlDatabase m_db;
@@ -217,7 +220,8 @@ void pdu_Ctrl::SaveModbusInit()
 void pdu_Ctrl::ReadPDUinit()
 {
     qDebug()<<"Read misc/rotate";
-    QSettings settings("/root/run/app/smartPDU.ini",QSettings::IniFormat);
+    QString appPath = QCoreApplication::applicationDirPath();
+    QSettings settings(appPath+"/smartPDU.ini",QSettings::IniFormat);
     QString strRotate=READ_INI_STR("misc/rotate","0");
     qDebug()<<"misc/rotate="<<strRotate;
     if(!strRotate.isEmpty())
@@ -238,7 +242,8 @@ void pdu_Ctrl::SetPDUInit()
     //QSettings settings("/root/run/app/smartPDU.ini",QSettings::IniFormat);
     QString strValue="\""+QString::number(m_nSaveAngle)+"\"";
     //settings.setValue("misc/rotate",strValue);
-    updateIniValue("/root/run/app/smartPDU.ini","misc","rotate",strValue);
+    QString appPath = QCoreApplication::applicationDirPath();
+    updateIniValue(appPath+"/smartPDU.ini","misc","rotate",strValue);
 }
 
 bool pdu_Ctrl::updateIniValue(const QString &filePath, const QString &section, const QString &key, const QString &newValue)

+ 39 - 84
Qt/Qt_Test/widget.cpp

@@ -47,8 +47,6 @@ Widget::Widget(QWidget *parent) :
     //ui->stackedWidget_Main->setCurrentWidget(ui->page_7);
     m_pMSGWidget=new MSGWidget(this);
     m_pMSGWidget->hide();
-
-
 }
 
 Widget::~Widget()
@@ -473,92 +471,49 @@ void Widget::adjustMSGWidgetPosition(bool isAuto)
             return;
         }
     }
-        // 获取主窗口的逻辑尺寸
-        QRect mainWindowSize = this->geometry();
-        int mainWidth = mainWindowSize.width();
-        int mainHeight = mainWindowSize.height();
-        qDebug()<<"Widget geometry("<<mainWindowSize.x()<<","<<mainWindowSize.y()<<","<<mainWindowSize.width()<<","<<mainWindowSize.height()<<")";
-        // 根据旋转角度确定实际显示尺寸
-        int displayWidth, displayHeight;
-        //if(m_nAngle == 90 || m_nAngle == 270) {
-            displayWidth = mainWidth;
-            displayHeight = mainHeight;
-        //} else {
-            // 90或270度旋转时,宽高交换
-        //   displayWidth = mainHeight;
-        //    displayHeight = mainWidth;
-        //}
-        // 设置弹窗宽度(略小于显示宽度)
-        m_pMSGWidget->setFW(displayWidth - 4);
-
-        // 根据旋转角度计算弹窗位置
-        QPoint popupPos;
-        int offset=5;
-        if(m_nAngle==0||m_nAngle==180)
+    // 获取主窗口的逻辑尺寸
+    QRect mainWindowSize = this->geometry();
+    int mainWidth = mainWindowSize.width();
+    int mainHeight = mainWindowSize.height();
+    qDebug()<<"Widget geometry("<<mainWindowSize.x()<<","<<mainWindowSize.y()<<","<<mainWindowSize.width()<<","<<mainWindowSize.height()<<")";
+    // 根据旋转角度确定实际显示尺寸
+    int displayWidth, displayHeight;
+        displayWidth = mainWidth;
+        displayHeight = mainHeight;
+
+    // 设置弹窗宽度(略小于显示宽度)
+    m_pMSGWidget->setFW(displayWidth-4);
+
+    // 根据旋转角度计算弹窗位置
+    QPoint popupPos;
+    int offset=0;
+    if(m_nAngle==0||m_nAngle==180)
+    {
+        if(m_nAngle==0)
         {
-            if(m_nAngle==0)
-            {
-                popupPos = QPoint(offset,(displayHeight - m_pMSGWidget->height()) / 2);
-            }
-            else
-            {
-                popupPos = QPoint(offset,-(displayHeight - m_pMSGWidget->height()) / 2);
-            }
-        }else
+            popupPos = QPoint(offset,(displayHeight - m_pMSGWidget->height()) / 2);
+        }
+        else
         {
-            if(m_nAngle==90)
-            {
-                popupPos = QPoint(-(displayHeight - m_pMSGWidget->height()) / 2,offset);
-            }else
-            {
-                //popupPos = QPoint(2,-(displayHeight - m_pMSGWidget->height()) / 2);
-                popupPos = QPoint((displayHeight - m_pMSGWidget->height()) / 2,offset);
-            }
+            popupPos = QPoint(-offset,-(displayHeight - m_pMSGWidget->height()) / 2);
         }
-        popupPos += QPoint(mainWindowSize.x(), mainWindowSize.y());
-        /*
-        switch(m_nAngle) {
-        case 0: // 0度旋转
-            popupPos = QPoint(
-                2,
-                (displayHeight - m_pMSGWidget->height()) / 2
-            );
-            break;
-
-        case 90: // 90度旋转
-            popupPos = QPoint(
-                2,
-                (displayHeight - m_pMSGWidget->height()) / 2
-            );
-            // 调整坐标系偏移
-            popupPos += QPoint(mainWidth, 0);
-            break;
-        case 180: // 180度旋转
-            popupPos = QPoint(
-                2,
-                (displayHeight - m_pMSGWidget->height()) / 2
-            );
-            // 调整坐标系偏移
-            popupPos += QPoint(mainWidth, mainHeight);
-            break;
-
-        case 270: // 270度旋转
-            popupPos = QPoint(
-                2,
-                (displayHeight - m_pMSGWidget->height()) / 2
-            );
-            // 调整坐标系偏移
-            popupPos += QPoint(0, mainHeight);
-            break;
+    }else
+    {
+        if(m_nAngle==90)
+        {
+            popupPos = QPoint(-(displayHeight - m_pMSGWidget->height()) / 2,offset);
+        }else
+        {
+            popupPos = QPoint((displayHeight - m_pMSGWidget->height()) / 2,-offset);
         }
-        */
-
-        // 应用位置
-        m_pMSGWidget->move(popupPos);
-        // 调试输出
-        qDebug() << "Rotation:" << m_nAngle;
-        qDebug() << "MSGWidget position:" << popupPos;
-        qDebug() << "MSGWidget geometry:" << m_pMSGWidget->geometry();
+    }
+    popupPos += QPoint(mainWindowSize.x(), mainWindowSize.y());
+    // 应用位置
+    m_pMSGWidget->move(popupPos);
+    // 调试输出
+    qDebug() << "Rotation:" << m_nAngle;
+    qDebug() << "MSGWidget position:" << popupPos;
+    qDebug() << "MSGWidget geometry:" << m_pMSGWidget->geometry();
 }
 
 void Widget::resizeEvent(QResizeEvent *event)

BIN
cust_data/qt/IP/Qt_Test


BIN
cust_data/qt/Qt_Test