Преглед на файлове

V0.8.1
1、重新添加了被删除的文件

Apple преди 1 месец
родител
ревизия
683764bc5b

BIN
Libraries/.DS_Store


BIN
Libraries/LHHTTPAPI/.DS_Store


BIN
Libraries/LHHTTPAPI/lib/.DS_Store


+ 0 - 0
Libraries/LHHTTPAPI/lib/MinGW_64/.4-sunloginclient51583E1F-7CA1-49AF-966F-1824D5BD8EA3


BIN
Libraries/LHHTTPAPI/lib/MinGW_64/libcurl.a


BIN
Libraries/LHHTTPAPI/lib/MinGW_64/libcurl.dll


BIN
Libraries/LHHTTPAPI/lib/MinGW_64/libcurld.dll


+ 0 - 0
common/.3-sunloginclient56B279EB-D226-4BF7-9F53-C6753746DEBC


+ 46 - 0
common/combox/customcombobox.cpp

@@ -0,0 +1,46 @@
+#include "customcombobox.h"
+#include <QApplication>
+#include <QGraphicsDropShadowEffect>
+#include <QListView>
+#include <QDebug>
+
+CustomComboBox::CustomComboBox(QWidget *parent)
+    : QComboBox(parent)
+{
+    
+}
+CustomComboBox::~CustomComboBox()
+{
+}
+
+/* 设置下拉框阴影 */
+void CustomComboBox::setViewShadowEffect()
+{
+    setView(new QListView());
+    if (nullptr != view() && nullptr != view()->window()) 
+    {
+        view()->window()->setWindowFlags(Qt::Popup | Qt::FramelessWindowHint | Qt::NoDropShadowWindowHint);
+        view()->window()->setAttribute(Qt::WA_TranslucentBackground);
+
+        QGraphicsDropShadowEffect *pShadowEffect = new QGraphicsDropShadowEffect(this);
+        pShadowEffect->setBlurRadius(LISTVIEW_MARGIN);  // 模糊度
+        pShadowEffect->setColor(QColor(0, 0, 0, 90));   // 阴影的颜色
+        pShadowEffect->setOffset(0, 0);                 // 水平和垂直偏移量
+        view()->setGraphicsEffect(pShadowEffect);
+
+        QApplication::setEffectEnabled(Qt::UI_AnimateCombo, false);
+    }
+}
+
+void CustomComboBox::showPopup()
+{
+    QComboBox::showPopup();
+
+    if (nullptr != view()) {
+        view()->setMinimumWidth(width() + LISTVIEW_MARGIN * 2);
+    }
+    QWidget *popup = findChild<QFrame*>();
+    if (nullptr != popup) {
+        popup->move(mapToGlobal(QPoint(-LISTVIEW_MARGIN, height() - LISTVIEW_MARGIN + 4)));
+    }
+}

+ 26 - 0
common/combox/customcombobox.h

@@ -0,0 +1,26 @@
+#ifndef CUSTOMCOMBOBOX_H
+#define CUSTOMCOMBOBOX_H
+
+#include <QComboBox>
+
+/**
+ * @brief 1、使用此类绘制下拉框阴影需要在样式表中设置QAbstractItemView {margin: LISTVIEW_MARGIN;}
+ *          否则阴影会被遮挡
+ *        2、调用函数setViewShadowEffect()设置下拉框阴影
+ */
+class CustomComboBox : public QComboBox
+{
+public:
+    explicit CustomComboBox(QWidget *parent = nullptr);
+    ~CustomComboBox();
+
+    /* 设置下拉框阴影 */
+    void setViewShadowEffect();
+
+    //重写下拉框弹出位置
+    void showPopup() override;
+private:
+    const int LISTVIEW_MARGIN = 12; // QAbstractItemView边距(阴影宽度)
+};
+
+#endif // CUSTOMCOMBOBOX_H

+ 176 - 0
common/combox/searchcombobox.cpp

@@ -0,0 +1,176 @@
+#include "searchcombobox.h"
+#include "wordtopinyin.h"
+
+#include <QStyleFactory>
+#include <QListView>
+#include <QApplication>
+#include <QGraphicsDropShadowEffect>
+#include <QTimer>
+
+SearchComboBox::SearchComboBox(QWidget *parent)
+    : QComboBox(parent)
+    , m_autoquery(false)
+    , m_showPopup(false)
+{
+    setStyle(QStyleFactory::create("Windows"));
+
+    QTimer::singleShot(0, this, [=]
+    {
+        view()->setMinimumWidth(width() + LISTVIEW_MARGIN * 2);
+    });
+
+    setEditable(true);
+    setCompleter(nullptr);
+
+    //输入后,开始查询
+    connect(this, (void (QComboBox::*)(const QString &))&QComboBox::currentIndexChanged, this, &SearchComboBox::OnCurrentIndexChanged);
+}
+
+SearchComboBox::~SearchComboBox()
+{
+//    qDebug()<<__func__;
+}
+
+void SearchComboBox::showPopup()
+{
+    // QComboBox::showPopup();
+    // QWidget *popup = findChild<QFrame*>();
+    // popup->move(mapToGlobal(QPoint( - LISTVIEW_MARGIN, height() - LISTVIEW_MARGIN)));
+    // m_showPopup = true;
+
+    QComboBox::showPopup();
+
+    if (nullptr != view()) {
+        view()->setMinimumWidth(width() + LISTVIEW_MARGIN * 2);
+    }
+    QWidget *popup = findChild<QFrame*>();
+    if (nullptr != popup) {
+        popup->move(mapToGlobal(QPoint(-LISTVIEW_MARGIN, height() - LISTVIEW_MARGIN + 4)));
+    }
+    m_showPopup = true;
+}
+
+void SearchComboBox::hidePopup()
+{
+    QComboBox::hidePopup();
+    m_showPopup = false;
+}
+
+/* 设置下拉框阴影 */
+void SearchComboBox::setViewShadowEffect()
+{
+    setView(new QListView());
+    view()->window()->setWindowFlags(Qt::Popup | Qt::FramelessWindowHint | Qt::NoDropShadowWindowHint);
+    view()->window()->setAttribute(Qt::WA_TranslucentBackground);
+
+    //取消拉下动画
+    QApplication::setEffectEnabled(Qt::UI_AnimateCombo, false);
+
+    //设置阴影
+    QGraphicsDropShadowEffect *pShadowEffect = new QGraphicsDropShadowEffect(this);
+    pShadowEffect->setBlurRadius(10); // 模糊度
+    pShadowEffect->setColor(QColor(0, 0, 0, 60)); // 阴影的颜色
+    pShadowEffect->setOffset(0, 0); // 水平和垂直偏移量
+    view()->setGraphicsEffect(pShadowEffect);
+}
+
+void SearchComboBox::wheelEvent(QWheelEvent *e)
+{
+    Q_UNUSED(e);
+    //屏蔽鼠标滚动
+}
+bool SearchComboBox::event(QEvent *event)
+{
+    //添加一个鼠标滚轮拦截来禁用combox滚轮改变CurrentIndex
+    if(event->type()==QEvent::Wheel)
+    {
+        return true;
+    }
+    else if(event->type() == QEvent::KeyPress)
+    {
+        QKeyEvent* ev = (QKeyEvent*)event;
+        if(ev->key() == Qt::Key_Enter || ev->key() == Qt::Key_Return){//回车开始查找匹配的数据
+            if(isEditable()){
+                autoquery();
+                m_autoquery = false;
+            }
+        }
+    }
+    else if(event->type() == QEvent::MouseButtonPress)
+    {
+        //点击下拉框,恢复到源数据集
+
+    }
+    else if(event->type() == QEvent::FocusOut)
+    {
+        //离开焦点时,编辑框自动填充当前选择项的文本
+        if(!m_showPopup)
+        {
+            if(!m_currentText.isEmpty())
+            {
+                setCurrentText(m_currentText);
+            }
+            else
+            {
+                int index = currentIndex();
+                if(index >= 0 && index < m_items.count())
+                {
+                    setCurrentText(m_items[index].text);
+
+                }
+            }
+            update();
+        }
+    }
+    return QComboBox::event(event);
+}
+
+void SearchComboBox::OnCurrentIndexChanged(const QString &text)
+{
+    m_currentText = text;
+}
+
+void SearchComboBox::addItem(const QString &text, const QVariant &userData)
+{
+    ItemData item;
+    item.text = text;
+    item.userdata = userData;
+    item.alphbat = WordToPinyin::firstPinyin(item.text);
+    m_items.append(item);
+    QComboBox::addItem(item.text, item.userdata);
+}
+
+void SearchComboBox::clear()
+{
+    m_items.clear();
+    QComboBox::clear();
+}
+
+void SearchComboBox::autoquery()
+{
+    QString text = currentText().toLower();
+    QComboBox::clear();
+    if(text.isEmpty())
+    {
+        //显示源数据集
+        foreach(ItemData item,m_items)
+        {
+            QComboBox::addItem(item.text, item.userdata);
+        }
+    }
+    else
+    {
+        //显示匹配的数据集
+        foreach(ItemData item, m_items)
+        {
+            if(item.alphbat.toLower().contains(text) || item.text.toLower().contains(text))
+            {
+                QComboBox::addItem(item.text, item.userdata);
+            }
+        }
+
+        //没匹配到任何数据
+        //....
+    }
+    showPopup();
+}

+ 59 - 0
common/combox/searchcombobox.h

@@ -0,0 +1,59 @@
+#ifndef SEARCHCOMBOBOX_H
+#define SEARCHCOMBOBOX_H
+
+#include <QComboBox>
+#include <QMouseEvent>
+
+
+
+/**
+ * @brief 1、使用此类绘制下拉框阴影需要在样式表中设置QAbstractItemView {margin: LISTVIEW_MARGIN;}
+ *          否则阴影会被遮挡
+ *        2、调用函数setViewShadowEffect()设置下拉框阴影,将下拉框阴影从构造函数中独立出去,单独设置,防止手动加载QSS时阴影不生效
+ */
+
+
+class SearchComboBox : public QComboBox
+{
+    Q_OBJECT
+public:
+    typedef struct ItemData
+    {
+        QString text;
+        QVariant userdata;
+        QString alphbat;
+    }ItemData;
+
+public:
+    explicit SearchComboBox(QWidget *parent = nullptr);
+    ~SearchComboBox();
+
+    //重写下拉框弹出位置
+    void showPopup() override;
+    void hidePopup() override;
+
+    /* 设置下拉框阴影 */
+    void setViewShadowEffect();
+
+    void clear();
+    void addItem(const QString &text, const QVariant &userData = QVariant());
+
+    void autoquery();
+
+protected:
+    bool event(QEvent *event) override;
+    void wheelEvent(QWheelEvent *e) override;
+
+private slots:
+    void OnCurrentIndexChanged(const QString &text);
+
+private:
+    const int LISTVIEW_MARGIN = 12; // QAbstractItemView边距(阴影宽度)
+
+    QList<ItemData> m_items;
+    bool m_autoquery;
+    bool m_showPopup;
+    QString m_currentText;
+};
+
+#endif // SEARCHCOMBOBOX_H

+ 67 - 0
common/combox/wordtopinyin.h

@@ -0,0 +1,67 @@
+#ifndef WORDTOPINYIN_H
+#define WORDTOPINYIN_H
+#include <QTextCodec>
+
+class WordToPinyin
+{
+public:
+    static bool In( quint16 start, quint16 end, quint16 code)
+    {
+        return (code>=start && code<=end) ? true : false;
+    }
+
+    static char convert(quint16 n)
+    {
+        if (In(0xB0A1,0xB0C4,n)) return 'a';
+        if (In(0XB0C5,0XB2C0,n)) return 'b';
+        if (In(0xB2C1,0xB4ED,n)) return 'c';
+        if (In(0xB4EE,0xB6E9,n)) return 'd';
+        if (In(0xB6EA,0xB7A0,n)) return 'e';
+        if (In(0xB7A1,0xB8c0,n)) return 'f';
+        if (In(0xB8C1,0xB9FD,n)) return 'g';
+        if (In(0xB9FE,0xBBF6,n)) return 'h';
+        if (In(0xBBF7,0xBFA4,n)) return 'j';
+        if (In(0xBFA5,0xC0AA,n)) return 'k';
+        if (In(0xC0AB,0xC2E7,n)) return 'l';
+        if (In(0xC2E8,0xC4C2,n)) return 'm';
+        if (In(0xC4C3,0xC5B5,n)) return 'n';
+        if (In(0xC5B6,0xC5BD,n)) return 'o';
+        if (In(0xC5BE,0xC6D9,n)) return 'p';
+        if (In(0xC6DA,0xC8BA,n)) return 'q';
+        if (In(0xC8BB,0xC8F5,n)) return 'r';
+        if (In(0xC8F6,0xCBF9,n)) return 's';
+        if (In(0xCBFA,0xCDD9,n)) return 't';
+        if (In(0xCDDA,0xCEF3,n)) return 'w';
+        if (In(0xCEF4,0xD1B8,n)) return 'x';
+        if (In(0xD1B9,0xD4D0,n)) return 'y';
+        if (In(0xD4D1,0xD7F9,n)) return 'z';
+        return '\0';
+    }
+
+    //获取首字母
+    static QString firstPinyin(const QString &string)
+    {
+        QTextCodec *codec4gbk = QTextCodec::codecForName("GBK");    //获取qt提供的gbk的解码器
+        QByteArray buf = codec4gbk->fromUnicode( string );        //qt用的unicode,专程gbk
+        int size = buf.size();
+        quint16 *array = new quint16[size+1]{0};
+        QString alphbats;
+        for( int i = 0, j = 0; i < size; i++, j++ )
+        {
+            if( (quint8)buf[i] < 0x80 )                        //gbk的第一个字节都大于0x81,所以小于0x80的都是符号,字母,数字etc
+            {
+                alphbats.append(QString("%1").arg(buf[i]));
+                continue;
+            }
+            array[j] = (((quint8)buf[i]) << 8) + (quint8)buf[i+1];    //计算gbk编码
+            i++;
+            alphbats.append( convert( array[j] ) );            //相当于查表,用gbk编码得到首拼音字母
+        }
+        delete [] array;
+        return alphbats;
+    }
+
+};
+
+
+#endif 

+ 205 - 0
common/warning/warning copy.ui_

@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Warning</class>
+ <widget class="QDialog" name="Warning">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>448</width>
+    <height>249</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true">QDialog#Warning
+{
+background:transparent;
+}</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <property name="spacing">
+    <number>0</number>
+   </property>
+   <property name="leftMargin">
+    <number>16</number>
+   </property>
+   <property name="topMargin">
+    <number>16</number>
+   </property>
+   <property name="rightMargin">
+    <number>16</number>
+   </property>
+   <property name="bottomMargin">
+    <number>16</number>
+   </property>
+   <item>
+    <widget class="QWidget" name="widget" native="true">
+     <property name="styleSheet">
+      <string notr="true">QWidget{
+background: #FFFFFF;
+border-radius: 8px;
+font-family: 思源黑体R;
+font-weight: 400;
+font-size: 18px;
+color: #3A3F63;
+line-height: 21px;
+text-align: left;
+font-style: normal;
+}
+
+QLabel#label_NC1
+{
+font-family: 思源黑体M;
+font-weight: bold;
+font-size: 18px;
+color: #3A3F63;
+line-height: 27px;
+text-transform: uppercase;
+}
+
+QLabel#label_line
+{
+background: #E6E9F4;
+}
+
+QLabel#label_Warn
+{
+	
+}
+
+QPushButton#pBtn_close{
+	border-image: url(:/ESM-8C_ICON/Dialog_close.png);
+}
+QPushButton#pBtn_close:hover{
+	
+	border-image: url(:/ESM-8C_ICON/Dialog_close2.png);
+}
+
+QPushButton
+{
+	background: #FFFFFF;
+	border: 1px solid #E6E9F4;
+	text-align: center;
+}
+
+
+/********* 普通方框按钮三种状态效果 *********/
+QPushButton#pBtn_cancel
+{
+    background: #FFFFFF;
+    border-radius: 16px;
+    border: 1px solid #E6E9F4;
+    color: #3A3F63;
+}
+QPushButton#pBtn_cancel:hover
+{
+    background: #FFFFFF;
+    border-radius: 16px;
+    border: 1px solid #4458FE;
+    color: #4458FE;
+}
+
+/********* 带有底色按钮三种状态效果 *********/
+QPushButton#pBtn_ok
+{
+    color:white;
+    background: qlineargradient( x0:1,x1:1,y1:0,y2:0,stop:1 #4F8AFF,stop:0 #4B5EFF);
+    border-radius: 16px;
+}
+
+QPushButton#pBtn_ok:hover
+{
+    color:white;
+    background: qlineargradient( x0:1,x1:1,y1:0,y2:0,stop:0 #5D73FF,stop:1 #6092FF);
+    border-radius: 16px;
+}
+</string>
+     </property>
+     <widget class="QLabel" name="label_NC1">
+      <property name="geometry">
+       <rect>
+        <x>32</x>
+        <y>18</y>
+        <width>90</width>
+        <height>18</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>提示</string>
+      </property>
+     </widget>
+     <widget class="QLabel" name="label_line">
+      <property name="geometry">
+       <rect>
+        <x>0</x>
+        <y>56</y>
+        <width>416</width>
+        <height>1</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string/>
+      </property>
+     </widget>
+     <widget class="QPushButton" name="pBtn_close">
+      <property name="geometry">
+       <rect>
+        <x>368</x>
+        <y>12</y>
+        <width>32</width>
+        <height>32</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string/>
+      </property>
+     </widget>
+     <widget class="QLabel" name="label_Warn">
+      <property name="geometry">
+       <rect>
+        <x>40</x>
+        <y>78</y>
+        <width>331</width>
+        <height>61</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>删除该设备,“执行计划”中与之对应的计划也会删除!</string>
+      </property>
+     </widget>
+     <widget class="QPushButton" name="pBtn_cancel">
+      <property name="geometry">
+       <rect>
+        <x>248</x>
+        <y>153</y>
+        <width>60</width>
+        <height>32</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>取消</string>
+      </property>
+     </widget>
+     <widget class="QPushButton" name="pBtn_ok">
+      <property name="geometry">
+       <rect>
+        <x>324</x>
+        <y>153</y>
+        <width>60</width>
+        <height>32</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>确定</string>
+      </property>
+     </widget>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>

+ 112 - 0
common/warning/warning.cpp

@@ -0,0 +1,112 @@
+#include "warning.h"
+#include "ui_warning.h"
+
+#include <QPainter>
+#include <QLayout>
+#include <QDebug>
+
+
+#include "spdlog/spdlog.h"
+#include "oneshadow.h"
+
+Warning::Warning(QWidget *parent) :
+    QDialog(parent),
+    ui(new Ui::Warning)
+{
+    ui->setupUi(this);
+    /* 设置无边框和背景透明 */
+    this->setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint);
+    this->setAttribute(Qt::WA_TranslucentBackground);
+
+    /* 设置文字自动换行 */
+    ui->label_Warn->setWordWrap(true);
+    /* 设置文本居中 */
+    // ui->label_Warn->setAlignment(Qt::AlignCenter);
+    ui->label_Warn->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
+    /* 加载警告图标 */
+    ui->label_warnIcon->setStyleSheet(R"(border-image: url(:/ESM-8C_ICON/Tip/Tips2x.png);)");
+
+    /* 阴影宽度是16 */
+    this->layout()->setMargin(SHADOW_W);
+    m_shadow = new OneShadow(QSize(width() - SHADOW_W*2, height() - SHADOW_W*2),SHADOW_W);
+
+    connect(ui->pBtn_close,SIGNAL(clicked()),this,SLOT(close()));
+    connect(ui->pBtn_cancel,SIGNAL(clicked()),this,SLOT(close()));
+    connect(ui->pBtn_ok,SIGNAL(clicked()),this,SLOT(do_ok()));
+}
+
+Warning::~Warning()
+{
+    delete ui;
+}
+
+void Warning::setText(const QString &text)
+{
+    /* 根据文本大小设置高度 */
+    ui->label_Warn->setText(text);
+    /* 重新设置位置 */
+    resetLabelSize();
+    moveWarnICON();
+}
+
+/* 只有一个确定按钮 */
+void Warning::setTextWithOneButton(const QString &text)
+{
+    ui->pBtn_cancel->hide();
+    // ui->pBtn_ok->move(ui->pBtn_cancel->x(),ui->pBtn_cancel->y());
+    ui->label_Warn->setText(text);
+    /* 重新设置位置 */
+    resetLabelSize();
+    moveWarnICON();
+}
+
+void Warning::paintEvent(QPaintEvent *event)
+{
+    QPainter painter(this);
+    painter.setRenderHint(QPainter::Antialiasing);
+    /* 绘制阴影 */
+    painter.drawImage(QPoint(0,0),m_shadow->image());
+}
+
+
+
+void Warning::do_ok()
+{
+    emit signal_ok();
+    m_isOk = true;
+    this->close();
+}
+
+/**
+ * @brief 重新设置显示文字的区域大小,主要是设置宽度,为计算出左侧的图标位置
+ *        字号是18,每个汉字的宽度、高度都是18,行高是27。
+ *        文字显示区域最大宽度是306,显示17个汉字。
+ *        阴影宽度是16,需要加上阴影宽度的坐标。
+ * 
+ */
+void Warning::resetLabelSize()
+{
+    int TextCount = ui->label_Warn->text().count();
+    int width = TextCount * 18;
+    if(width > 306)
+    {
+        width = 306;
+    }
+    // ui->label_Warn->setFixedWidth(width);
+    ui->label_Warn->resize(width, ui->label_Warn->height());
+    /* ui->widget是布局确定的大小,获取它的大小不准确 */
+    int widgetWidth = this->width();
+    int x = (widgetWidth - width) / 2;
+    // int x = (widgetWidth - width - ui->label_warnIcon->width() - 12) / 2;
+    // x = x + ui->label_warnIcon->width() + 12; /* 加上图标的宽度,和图标之间的间距 */
+    ui->label_Warn->move(x, ui->label_Warn->y());
+}
+
+
+/* 移动警告图标 */
+void Warning::moveWarnICON()
+{
+    int x = ui->label_Warn->x() - ui->label_warnIcon->width() - 12;
+    int y = ui->label_Warn->y() + ui->label_Warn->height() / 2 - ui->label_warnIcon->height() / 2;
+    ui->label_warnIcon->move(x,y);
+}

+ 46 - 0
common/warning/warning.h

@@ -0,0 +1,46 @@
+#ifndef WARNING_H
+#define WARNING_H
+
+#include <QDialog>
+
+class OneShadow;
+
+namespace Ui {
+class Warning;
+}
+
+class Warning : public QDialog
+{
+    Q_OBJECT
+
+public:
+    explicit Warning(QWidget *parent = nullptr);
+    ~Warning();
+
+    void setText(const QString& text);
+    void setTextWithOneButton(const QString& text);     /* 只有一个确定按钮 */
+    bool isOk() const { return m_isOk; }
+signals:
+    void signal_ok();
+
+protected:
+    void paintEvent(QPaintEvent *event);
+
+private slots:
+    void do_ok();
+
+private:
+    /* 重新设置显示文字的区域大小 */
+    void resetLabelSize();
+    /* 移动警告图标 */
+    void moveWarnICON();
+
+private:
+    Ui::Warning *ui;
+
+    OneShadow* m_shadow = nullptr;
+    const int SHADOW_W = 16;                /* 阴影的大小 */
+    bool m_isOk = false;
+};
+
+#endif // WARNING_H

+ 222 - 0
common/warning/warning.ui

@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Warning</class>
+ <widget class="QDialog" name="Warning">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>440</width>
+    <height>302</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true">QDialog#Warning
+{
+background:transparent;
+}</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <property name="spacing">
+    <number>0</number>
+   </property>
+   <property name="leftMargin">
+    <number>16</number>
+   </property>
+   <property name="topMargin">
+    <number>16</number>
+   </property>
+   <property name="rightMargin">
+    <number>16</number>
+   </property>
+   <property name="bottomMargin">
+    <number>16</number>
+   </property>
+   <item>
+    <widget class="QWidget" name="widget" native="true">
+     <property name="styleSheet">
+      <string notr="true">QWidget{
+background: #FFFFFF;
+border-radius: 8px;
+font-family: 思源黑体R;
+font-weight: 400;
+font-size: 18px;
+color: #3A3F63;
+line-height: 21px;
+text-align: left;
+font-style: normal;
+}
+
+QLabel#label_NC1
+{
+font-family: 思源黑体M;
+font-weight: bold;
+font-size: 18px;
+color: #3A3F63;
+line-height: 27px;
+text-transform: uppercase;
+}
+
+QLabel#label_line
+{
+background: #E6E9F4;
+}
+
+QLabel#label_Warn
+{
+	font-family: 思源黑体R;
+	font-weight: 400;
+	font-size: 18px;
+	color: #3A3F63;
+	line-height: 27px;
+}
+
+QPushButton#pBtn_close{
+	border-image: url(:/ESM-8C_ICON/Dialog_close.png);
+}
+QPushButton#pBtn_close:hover{
+	
+	border-image: url(:/ESM-8C_ICON/Dialog_close2.png);
+}
+
+QPushButton
+{
+	background: #FFFFFF;
+	border: 1px solid #E6E9F4;
+	text-align: center;
+}
+
+
+/********* 普通方框按钮三种状态效果 *********/
+QPushButton#pBtn_cancel
+{
+    background: #FFFFFF;
+    border-radius: 16px;
+    border: 1px solid #E6E9F4;
+    color: #3A3F63;
+}
+QPushButton#pBtn_cancel:hover
+{
+    background: #FFFFFF;
+    border-radius: 16px;
+    border: 1px solid #4458FE;
+    color: #4458FE;
+}
+
+/********* 带有底色按钮三种状态效果 *********/
+QPushButton#pBtn_ok
+{
+    color:white;
+    background: qlineargradient( x0:1,x1:1,y1:0,y2:0,stop:1 #4F8AFF,stop:0 #4B5EFF);
+    border-radius: 16px;
+}
+
+QPushButton#pBtn_ok:hover
+{
+    color:white;
+    background: qlineargradient( x0:1,x1:1,y1:0,y2:0,stop:0 #5D73FF,stop:1 #6092FF);
+    border-radius: 16px;
+}
+</string>
+     </property>
+     <widget class="QLabel" name="label_NC1">
+      <property name="geometry">
+       <rect>
+        <x>32</x>
+        <y>18</y>
+        <width>90</width>
+        <height>18</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>提示</string>
+      </property>
+     </widget>
+     <widget class="QLabel" name="label_line">
+      <property name="geometry">
+       <rect>
+        <x>0</x>
+        <y>56</y>
+        <width>416</width>
+        <height>1</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string/>
+      </property>
+     </widget>
+     <widget class="QPushButton" name="pBtn_close">
+      <property name="geometry">
+       <rect>
+        <x>368</x>
+        <y>12</y>
+        <width>32</width>
+        <height>32</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string/>
+      </property>
+     </widget>
+     <widget class="QLabel" name="label_Warn">
+      <property name="geometry">
+       <rect>
+        <x>50</x>
+        <y>78</y>
+        <width>308</width>
+        <height>120</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>删除该设备,“执行计划”中与之对应的计划也会删除!</string>
+      </property>
+     </widget>
+     <widget class="QPushButton" name="pBtn_cancel">
+      <property name="geometry">
+       <rect>
+        <x>248</x>
+        <y>216</y>
+        <width>60</width>
+        <height>32</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>取消</string>
+      </property>
+     </widget>
+     <widget class="QPushButton" name="pBtn_ok">
+      <property name="geometry">
+       <rect>
+        <x>324</x>
+        <y>216</y>
+        <width>60</width>
+        <height>32</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>确定</string>
+      </property>
+     </widget>
+     <widget class="QLabel" name="label_warnIcon">
+      <property name="geometry">
+       <rect>
+        <x>10</x>
+        <y>130</y>
+        <width>20</width>
+        <height>20</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string/>
+      </property>
+     </widget>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>