提交 058a2825 作者: zhangyl

车辆数据本地保存

上级 e3e3e125
QMAKE_CXX.QT_COMPILER_STDCXX = 201402L
QMAKE_CXX.QMAKE_GCC_MAJOR_VERSION = 7
QMAKE_CXX.QMAKE_GCC_MINOR_VERSION = 3
QMAKE_CXX.QMAKE_GCC_PATCH_VERSION = 0
QMAKE_CXX.COMPILER_MACROS = \
QT_COMPILER_STDCXX \
QMAKE_GCC_MAJOR_VERSION \
QMAKE_GCC_MINOR_VERSION \
QMAKE_GCC_PATCH_VERSION
QMAKE_CXX.INCDIRS = \
C:/Qt/Qt5.13.2/Tools/mingw730_32/lib/gcc/i686-w64-mingw32/7.3.0/include/c++ \
C:/Qt/Qt5.13.2/Tools/mingw730_32/lib/gcc/i686-w64-mingw32/7.3.0/include/c++/i686-w64-mingw32 \
C:/Qt/Qt5.13.2/Tools/mingw730_32/lib/gcc/i686-w64-mingw32/7.3.0/include/c++/backward \
C:/Qt/Qt5.13.2/Tools/mingw730_32/lib/gcc/i686-w64-mingw32/7.3.0/include \
C:/Qt/Qt5.13.2/Tools/mingw730_32/lib/gcc/i686-w64-mingw32/7.3.0/include-fixed \
C:/Qt/Qt5.13.2/Tools/mingw730_32/i686-w64-mingw32/include
QMAKE_CXX.LIBDIRS = \
C:/Qt/Qt5.13.2/Tools/mingw730_32/lib/gcc/i686-w64-mingw32/7.3.0 \
C:/Qt/Qt5.13.2/Tools/mingw730_32/lib/gcc \
C:/Qt/Qt5.13.2/Tools/mingw730_32/i686-w64-mingw32/lib \
C:/Qt/Qt5.13.2/Tools/mingw730_32/lib
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
QT += core gui sql serialport
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11
# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
#自定Pro结构文件
MOC_DIR = temp/moc
RCC_DIR = temp/rcc
UI_DIR = temp/ui
OBJECTS_DIR = temp/obj
#这样只有exe文件在bin文件夹
DESTDIR = bin
#为了使日志在 Release 模式下也可输出文件名和代码行数
DEFINES += QT_MESSAGELOGCONTEXT
# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
bridge.cpp \
frmmessagebox.cpp \
iconhelper.cpp \
logindlg.cpp \
main.cpp \
mainwindow.cpp
HEADERS += \
bridge.h \
frmmessagebox.h \
iconhelper.h \
logindlg.h \
mainwindow.h \
myhelper.h
FORMS += \
frmmessagebox.ui \
logindlg.ui \
mainwindow.ui
#添加日志
include(modeller_applog/applogmodel.pri)
#添加数据库助手
include(sqliteassistant/sqliteassistant.pri)
#添加读卡模块
include(readEPC/readEPC.pri)
#添加串口热插拔检测
include(comChange/comChange.pri)
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
RESOURCES += \
image.qrc
File:(sqliteassistant\sqliteassistant.cpp) Line:(30) Function:long int SqliteAssistant::connectSql() Succeed to connect database. (2022-02-11 08:55:13 周五)
File:(main.cpp) Line:(22) Function:int qMain(int, char**) connectSql ok (2022-02-11 08:55:13 周五)
File:(mainwindow.cpp) Line:(51) Function:void MainWindow::SoftStart() 软件启动时间: "2022-02-11 08:55:13" (2022-02-11 08:55:13 周五)
File:(sqliteassistant\sqliteassistant.cpp) Line:(30) Function:long int SqliteAssistant::connectSql() Succeed to connect database. (2022-02-11 08:59:37 周五)
File:(main.cpp) Line:(22) Function:int qMain(int, char**) connectSql ok (2022-02-11 08:59:37 周五)
File:(mainwindow.cpp) Line:(51) Function:void MainWindow::SoftStart() 软件启动时间: "2022-02-11 08:59:37" (2022-02-11 08:59:37 周五)
#include "bridge.h"
#include <QDebug>
extern QString DataBase_ServerIP;
extern QString DataBase_ServerProt;
extern QString DataBase_ComName;
extern QString DataBase_ComBund;
Bridge::Bridge(QObject *parent) : QObject(parent)
{
m_ReadEPCControl = new ReadEPCControl();
m_ReadEPCControl_thread = new QThread;
m_ReadEPCControl->moveToThread(m_ReadEPCControl_thread);
m_ReadEPCControl_thread->start();
connect(this,&Bridge::SendToReadEPCControl_Connect,m_ReadEPCControl,[=](){
qDebug()<<"串口启动";
m_ReadEPCControl->setComm(DataBase_ComName,DataBase_ComBund.toLong());
});
connect(m_ReadEPCControl,&ReadEPCControl::SendToBridge,this,[=](QByteArray data){
QString str;
str = data.toHex();
qDebug()<< str;
if(str.size() == 16){
str = str.mid(8,4);
qDebug()<< str;
bool ok;
int hexnum = str.toInt(&ok,16); // 表示以16进制方式读取字符串
emit SendToWindow(QString::number(hexnum));
}
});
}
/**
* @projectName XinHu_VehicleID
* @brief 摘要
* 发卡系统中间类,负责转发串口接收的数据
* @author ZhangYL
* @date 2022-02-11
*/
#ifndef BRIDGE_H
#define BRIDGE_H
#include <QObject>
#include <QThread>
#include "readEPC/readepccontrol.h"
class Bridge : public QObject
{
Q_OBJECT
public:
explicit Bridge(QObject *parent = nullptr);
ReadEPCControl *m_ReadEPCControl; //定义EPC对象
signals:
void SendToReadEPCControl_Connect();
void SendToWindow(QString data);
public slots:
private:
QThread *m_ReadEPCControl_thread; //定义子线程
};
#endif // BRIDGE_H
FORMS += \
$$PWD/porttest.ui
HEADERS += \
$$PWD/comchange.h \
$$PWD/porttest.h
SOURCES += \
$$PWD/comchange.cpp \
$$PWD/porttest.cpp
#include "comchange.h"
#include <QApplication>
#include <QMutex>
#include <QSerialPort>
#include <QSerialPortInfo>
#include <qdebug.h>
ComChange* ComChange::m_comChange = nullptr;
ComChange *ComChange::getInstance()
{
if(m_comChange == nullptr)
{
static QMutex mutex; //实例互斥锁。
QMutexLocker locker(&mutex); //加互斥锁。
if(m_comChange == nullptr)
{
m_comChange = new ComChange();
}
}
return m_comChange;
}
/**
* @brief 获取系统中所有可用的串口名
* @return
*/
QStringList ComChange::getAvailablePort()
{
QStringList strName;
foreach(const QSerialPortInfo& info, QSerialPortInfo::availablePorts())
{
QSerialPort port(info);
if(port.open(QIODevice::ReadWrite))
{
strName << info.portName();
port.close();
}
}
return strName;
}
/**
* @brief 设置窗口句柄用于过滤事件
* @param hwnd
*/
void ComChange::setHWND(HWND hwnd)
{
this->m_hwnd = hwnd;
}
ComChange::ComChange(QObject *parent) : QObject(parent)
{
qApp->installNativeEventFilter(this); // 安装事件过滤器
}
bool ComChange::nativeEventFilter(const QByteArray &eventType, void *message, long *result)
{
MSG* msg = reinterpret_cast<MSG*>(message);
if(msg->message == WM_DEVICECHANGE // 通知应用程序设备或计算机的硬件配置发生更改。
&& msg->hwnd == this->m_hwnd) // 过滤事件
{
PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)msg->lParam;
switch (msg->wParam)
{
case DBT_DEVICEARRIVAL: // 插入
{
if (lpdb->dbch_devicetype == DBT_DEVTYP_PORT) // 设备类型为串口
{
PDEV_BROADCAST_PORT lpdbv = (PDEV_BROADCAST_PORT)lpdb;
QString strName = QString::fromWCharArray(lpdbv->dbcp_name); //插入的串口名
emit comStatus(strName, true);
}
break;
}
case DBT_DEVICEREMOVECOMPLETE: // 拔出
{
if (lpdb->dbch_devicetype == DBT_DEVTYP_PORT) // 设备类型为串口
{
PDEV_BROADCAST_PORT lpdbv = (PDEV_BROADCAST_PORT)lpdb;
QString strName = QString::fromWCharArray(lpdbv->dbcp_name); //拔出的串口名
emit comStatus(strName, false);
}
break;
}
default:
break;
}
}
return false;
}
/******************************************************************************
* @文件名 comchange.h
* @功能 通过继承于QAbstractNativeEventFilter来监测串口热插拔由于windows消息会发给每一个窗口,
* 所以如果打开多个窗或者使用到如QComboBox之类的控件,当串口插入或者拔出时会触发多次事件,
* 在这里我使用的解决方法时传入一个窗口句柄,通过窗口句柄过滤事件,但不知道有没有其它更好的办法。
*
* @开发者 (作者)
* @时间 2021/11/15
* @备注
*****************************************************************************/
#ifndef COMCHANGE_H
#define COMCHANGE_H
#include <QObject>
#include <qabstractnativeeventfilter.h>
#include <windows.h>
#include "dbt.h"
class ComChange : public QObject, public QAbstractNativeEventFilter
{
Q_OBJECT
public:
static ComChange* getInstance();
static QStringList getAvailablePort();
void setHWND(HWND hwnd);
private:
explicit ComChange(QObject *parent = nullptr);
protected:
bool nativeEventFilter(const QByteArray &eventType, void *message, long *result);
signals:
/**
* @brief 传出串口热插拔状态
* @param name 串口名
* @param flag true:插入 false:拔出
*/
void comStatus(QString name, bool flag);
private:
static ComChange* m_comChange;
HWND m_hwnd;
};
#endif // COMCHANGE_H
#include "porttest.h"
#include "ui_porttest.h"
#include <qdebug.h>
#include <windows.h>
#include "dbt.h"
#include "comchange.h"
PortTest::PortTest(QWidget *parent) :
QWidget(parent),
ui(new Ui::PortTest)
{
ui->setupUi(this);
this->setWindowTitle("获取所有可用串口;串口热插拔监测。");
// 第二种方法
ComChange::getInstance()->setHWND((HWND)this->winId());
connect(ComChange::getInstance(), &ComChange::comStatus, this, &PortTest::on_comStatus);
QStringList strName = ComChange::getAvailablePort(); // 获取所有可用串口
ui->comboBox->addItems(strName);
ui->comboBox_2->addItems(strName);
ui->comboBox_3->addItems(strName);
ui->comboBox_4->addItems(strName);
}
PortTest::~PortTest()
{
delete ui;
}
void PortTest::on_comStatus(QString name, bool flag)
{
if(flag) // 串口插入时自动添加串口名
{
ui->comboBox->addItem(name);
ui->comboBox_2->addItem(name);
ui->comboBox_3->addItem(name);
ui->comboBox_4->addItem(name);
}
else // 串口拔出时自动移除串口名
{
ui->comboBox->removeItem(ui->comboBox->findText(name));
ui->comboBox_2->removeItem(ui->comboBox_2->findText(name));
ui->comboBox_3->removeItem(ui->comboBox_3->findText(name));
ui->comboBox_4->removeItem(ui->comboBox_4->findText(name));
}
}
/**
* @brief 第一种方法
* @param eventType
* @param message
* @param result
* @return
*/
bool PortTest::nativeEvent(const QByteArray &eventType, void *message, long *result)
{
MSG* msg = reinterpret_cast<MSG*>(message);
if(msg->message == WM_DEVICECHANGE) // 通知应用程序设备或计算机的硬件配置发生更改。
{
PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)msg->lParam;
qDebug() << msg->wParam;
switch (msg->wParam)
{
case DBT_DEVICEARRIVAL: // 插入
{
if (lpdb->dbch_devicetype == DBT_DEVTYP_PORT) // 设备类型为串口
{
PDEV_BROADCAST_PORT lpdbv = (PDEV_BROADCAST_PORT)lpdb;
QString strName = QString::fromWCharArray(lpdbv->dbcp_name); //插入的串口名
qDebug() << strName;
}
break;
}
case DBT_DEVICEREMOVECOMPLETE: // 拔出
{
if (lpdb->dbch_devicetype == DBT_DEVTYP_PORT) // 设备类型为串口
{
PDEV_BROADCAST_PORT lpdbv = (PDEV_BROADCAST_PORT)lpdb;
QString strName = QString::fromWCharArray(lpdbv->dbcp_name); //拔出的串口名
qDebug() << strName;
}
break;
}
default:
break;
}
}
return false;
}
/******************************************************************************
* @文件名 porttest.h
* @功能 串口检测功能测试,1、获取所有可用串口名; 2、自动监测串口热插拔
*
* @开发者 (作者)
* @时间 2021/12/04
* @备注
*****************************************************************************/
#ifndef PORTTEST_H
#define PORTTEST_H
#include <QWidget>
namespace Ui {
class PortTest;
}
class PortTest : public QWidget
{
Q_OBJECT
public:
explicit PortTest(QWidget *parent = nullptr);
~PortTest();
protected:
bool nativeEvent(const QByteArray &eventType, void *message, long *result);
private:
void on_comStatus(QString name, bool flag);
private:
Ui::PortTest *ui;
};
#endif // PORTTEST_H
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>PortTest</class>
<widget class="QWidget" name="PortTest">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>414</width>
<height>121</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="leftMargin">
<number>1</number>
</property>
<property name="topMargin">
<number>1</number>
</property>
<property name="rightMargin">
<number>1</number>
</property>
<property name="bottomMargin">
<number>1</number>
</property>
<property name="spacing">
<number>2</number>
</property>
<item row="1" column="1">
<widget class="QComboBox" name="comboBox_4"/>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="comboBox_2"/>
</item>
<item row="1" column="0">
<widget class="QComboBox" name="comboBox_3"/>
</item>
<item row="0" column="0">
<widget class="QComboBox" name="comboBox"/>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
#include "frmmessagebox.h"
#include "ui_frmmessagebox.h"
#include "iconhelper.h"
#include "myhelper.h"
frmMessageBox::frmMessageBox(QWidget *parent) :
QDialog(parent),
ui(new Ui::frmMessageBox)
{
ui->setupUi(this);
this->mousePressed = false;
//设置窗体标题栏隐藏
this->setWindowFlags(Qt::FramelessWindowHint);
//设置窗体关闭时自动释放内存
this->setAttribute(Qt::WA_DeleteOnClose);
//设置图形字体
IconHelper::Instance()->SetIcon(ui->lab_Ico, QChar(0xf015), 12);
IconHelper::Instance()->SetIcon(ui->btnMenu_Close, QChar(0xf00d), 10);
//关联关闭按钮
connect(ui->btnMenu_Close, SIGNAL(clicked()), this, SLOT(close()));
connect(ui->btnCancel, SIGNAL(clicked()), this, SLOT(close()));
//窗体居中显示
myHelper::FormInCenter(this);
}
frmMessageBox::~frmMessageBox()
{
delete ui;
}
void frmMessageBox::SetMessage(const QString &msg, int type)
{
if (type == 0) {
ui->labIcoMain->setStyleSheet("border-image: url(:/image/info.png);");
ui->btnCancel->setVisible(false);
ui->lab_Title->setText("提示");
} else if (type == 1) {
ui->labIcoMain->setStyleSheet("border-image: url(:/image/question.png);");
ui->lab_Title->setText("询问");
} else if (type == 2) {
ui->labIcoMain->setStyleSheet("border-image: url(:/image/error.png);");
ui->btnCancel->setVisible(false);
ui->lab_Title->setText("错误");
}
ui->labInfo->setText(msg);
}
void frmMessageBox::on_btnOk_clicked()
{
done(1);
this->close();
}
void frmMessageBox::mouseMoveEvent(QMouseEvent *e)
{
if (mousePressed && (e->buttons() && Qt::LeftButton)) {
this->move(e->globalPos() - mousePoint);
e->accept();
}
}
void frmMessageBox::mousePressEvent(QMouseEvent *e)
{
if (e->button() == Qt::LeftButton) {
mousePressed = true;
mousePoint = e->globalPos() - this->pos();
e->accept();
}
}
void frmMessageBox::mouseReleaseEvent(QMouseEvent *)
{
mousePressed = false;
}
#ifndef FRMMESSAGEBOX_H
#define FRMMESSAGEBOX_H
#include <QDialog>
#include <QMouseEvent>
namespace Ui {
class frmMessageBox;
}
class frmMessageBox : public QDialog
{
Q_OBJECT
public:
explicit frmMessageBox(QWidget *parent = 0);
~frmMessageBox();
void SetMessage(const QString &msg, int type);
protected:
void mouseMoveEvent(QMouseEvent *e);
void mousePressEvent(QMouseEvent *e);
void mouseReleaseEvent(QMouseEvent *);
private slots:
void on_btnOk_clicked();
private:
Ui::frmMessageBox *ui;
QPoint mousePoint; //鼠标拖动自定义标题栏时的坐标
bool mousePressed; //鼠标是否按下
};
#endif // FRMMESSAGEBOX_H
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>frmMessageBox</class>
<widget class="QDialog" name="frmMessageBox">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>303</width>
<height>143</height>
</rect>
</property>
<property name="windowTitle">
<string>提示</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QWidget" name="widget_title" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>28</height>
</size>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="lab_Ico">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>31</width>
<height>0</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lab_Title">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="styleSheet">
<string notr="true">font: 10pt &quot;微软雅黑&quot;;</string>
</property>
<property name="text">
<string>提示</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="widget_menu" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QPushButton" name="btnMenu_Close">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>40</width>
<height>0</height>
</size>
</property>
<property name="cursor">
<cursorShape>ArrowCursor</cursorShape>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip">
<string>关闭</string>
</property>
<property name="text">
<string/>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QWidget" name="widget_main" native="true">
<property name="styleSheet">
<string notr="true">font: 11pt &quot;微软雅黑&quot;;</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="spacing">
<number>5</number>
</property>
<property name="leftMargin">
<number>5</number>
</property>
<property name="topMargin">
<number>5</number>
</property>
<property name="rightMargin">
<number>5</number>
</property>
<property name="bottomMargin">
<number>5</number>
</property>
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string/>
</property>
<widget class="QLabel" name="labIcoMain">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>45</width>
<height>45</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">border-image: url(:/image/info.png);</string>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QLabel" name="labInfo">
<property name="geometry">
<rect>
<x>70</x>
<y>10</y>
<width>211</width>
<height>41</height>
</rect>
</property>
<property name="text">
<string>确定要删除吗?</string>
</property>
<property name="scaledContents">
<bool>false</bool>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
<widget class="QWidget" name="layoutWidget">
<property name="geometry">
<rect>
<x>10</x>
<y>60</y>
<width>271</width>
<height>34</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="btnOk">
<property name="cursor">
<cursorShape>PointingHandCursor</cursorShape>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>确定(&amp;O)</string>
</property>
<property name="icon">
<iconset resource="main.qrc">
<normaloff>:/image/update.png</normaloff>:/image/update.png</iconset>
</property>
<property name="iconSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btnCancel">
<property name="cursor">
<cursorShape>PointingHandCursor</cursorShape>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>取消(&amp;C)</string>
</property>
<property name="icon">
<iconset resource="main.qrc">
<normaloff>:/image/close.png</normaloff>:/image/close.png</iconset>
</property>
<property name="iconSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources>
<include location="main.qrc"/>
</resources>
<connections/>
</ui>
#include "iconhelper.h"
IconHelper* IconHelper::_instance = 0;
IconHelper::IconHelper(QObject*):
QObject(qApp)
{
int fontId = QFontDatabase::addApplicationFont(":/image/fontawesome-webfont.ttf");
QString fontName = QFontDatabase::applicationFontFamilies(fontId).at(0);
iconFont = QFont(fontName);
}
void IconHelper::SetIcon(QLabel* lab, QChar c, int size)
{
iconFont.setPointSize(size);
lab->setFont(iconFont);
lab->setText(c);
}
void IconHelper::SetIcon(QPushButton* btn, QChar c, int size)
{
iconFont.setPointSize(size);
btn->setFont(iconFont);
btn->setText(c);
}
#ifndef ICONHELPER_H
#define ICONHELPER_H
#include <QObject>
#include <QFont>
#include <QFontDatabase>
#include <QMutex>
#include <QLabel>
#include <QPushButton>
#include <QApplication>
class IconHelper : public QObject
{
private:
explicit IconHelper(QObject *parent = 0);
QFont iconFont;
static IconHelper* _instance;
public:
static IconHelper* Instance()
{
static QMutex mutex;
if (!_instance) {
QMutexLocker locker(&mutex);
if (!_instance) {
_instance = new IconHelper;
}
}
return _instance;
}
void SetIcon(QLabel* lab, QChar c, int size = 10);
void SetIcon(QPushButton* btn, QChar c, int size = 10);
};
#endif // ICONHELPER_H
<RCC>
<qresource prefix="/">
<file>image/add-line_horizontal.png</file>
<file>image/add-line_vertical.png</file>
<file>image/array_down.png</file>
<file>image/black.css</file>
<file>image/blue.css</file>
<file>image/checkbox_checked.png</file>
<file>image/checkbox_unchecked.png</file>
<file>image/Close_0.png</file>
<file>image/Close_1.png</file>
<file>image/db_admin_0.png</file>
<file>image/db_admin_1.png</file>
<file>image/db_cdPwd_0.png</file>
<file>image/db_cdPwd_1.png</file>
<file>image/db_cdUser_0.png</file>
<file>image/db_cdUser_1.png</file>
<file>image/db_close_0.png</file>
<file>image/db_close_1.png</file>
<file>image/db_select_0.png</file>
<file>image/db_select_1.png</file>
<file>image/db_setting_0.png</file>
<file>image/db_setting_1.png</file>
<file>image/error.png</file>
<file>image/Font Awesome Cheatsheet.png</file>
<file>image/fontawesome-webfont.ttf</file>
<file>image/gray.css</file>
<file>image/header.png</file>
<file>image/info.png</file>
<file>image/jinmai_icon.png</file>
<file>image/jinmai_logo.png</file>
<file>image/Login_Dialog.qss</file>
<file>image/Min_0.png</file>
<file>image/Min_1.png</file>
<file>image/navy.css</file>
<file>image/qt_zh_CN.qm</file>
<file>image/question.png</file>
<file>image/radio_normal.png</file>
<file>image/radio_selected.png</file>
<file>image/sub-line_horizontal.png</file>
<file>image/sub-line_vertical.png</file>
</qresource>
</RCC>
*{
font-family:Microsoft YaHei;
}
QWidget#wid_main{
background-color: #1B89CA;
border: 1px solid #1B89CA;
border-radius: 10px;
}
QWidget#widget_sec{
background-color: rgb(255,255,255);
border: 1px solid rgb(255,255,255);
border-bottom-left-radius:10px;
border-bottom-right-radius:10px;
}
QLabel{
background: transparent;
border: 1px solid transparent;
color:rgb(0,0,0);
font-weight: bold;
font: 25 15pt "Microsoft YaHei";
padding: 1px;
}
QLabel#lab_title{
color:rgb(255,255,255);
font: 50 10pt "Microsoft YaHei";
}
QLabel#lab_name{
font: 50 20pt "Microsoft YaHei";
}
QLabel#lab_user{
font: 25 12pt "Microsoft YaHei";
}
QLabel#lab_pwd{
font: 25 12pt "Microsoft YaHei";
}
QLabel#lab_logo{
border-image: url(:/image/jinmai_icon.png);
}
/*密码框*/
QLineEdit#lineEdit_pwd,#lineEdit_user
{
border: 1px solid rgb(209 , 209 , 209);
border-right:transparent;
border-left:transparent;
border-top:transparent;
}
QLineEdit#lineEdit_pwd,#lineEdit_user:hover
{
padding-top:0px ;
border-top:transparent;
border-left:transparent;
border-right:transparent;
}
QPushButton {
background-color: #1B89CA;
border: 1px solid transparent;
font-weight: bold;
font: 25 15pt "Microsoft YaHei";
padding: 1px 4px;
}
QPushButton:hover{
}
QPushButton:pressed
{
}
/*登陆按钮*/
QPushButton#pbn_login
{
color:#e6e6e6;
font-weight: bold;
background-color:#1B89CA;
border-radius:5px;
}
QPushButton#pbn_login:hover
{
color:white;
background-color:#5CACEE;
}
QPushButton#pbn_login:pressed
{
color:#e6e6e6;
background-color:#1B89CA;
padding-left:3px;
padding-top:3px;
}
/*最小化窗口*/
QPushButton#pbn_min{
border-image: url(:/image/Min_0.png);
}
QPushButton#pbn_min:hover{
border-image: url(:/image/Min_1.png);
}
QPushButton#pbn_min:pressed{
border-image: url(:/image/Min_0.png);
}
/*关闭窗口*/
QPushButton#pbn_close{
border-image: url(:/image/Close_0.png);
}
QPushButton#pbn_close:hover{
border-image: url(:/image/Close_1.png);
}
QPushButton#pbn_close:pressed{
border-image: url(:/image/Close_0.png);
}
QWidget#frmLogin,QWidget#frmPopup,QWidget#frmHostInfo,QWidget#frmLogout,QWidget#frmConfig,QWidget#frmData,QWidget#frmDefence,QWidget#frmHost,QWidget#frmMain,QWidget#frmPwd,QWidget#frmSelect,QWidget#frmMessageBox{
border:1px solid #4D4D4D;
border-radius:0px;
}
.QFrame{
border:1px solid #636363;
border-radius:5px;
}
QWidget#widget_title{
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #4D4D4D, stop:1 #292929);
}
QLabel#lab_Ico,QLabel#lab_Title{
border-radius:0px;
color: #F0F0F0;
background-color:rgba(0,0,0,0);
border-style:none;
}
QLineEdit {
border: 1px solid #636363;
border-radius: 5px;
padding: 2px;
background: none;
selection-background-color: #4D4D4D;
}
QLineEdit[echoMode="2"] {
lineedit-password-character: 9679;
}
.QGroupBox{
border: 1px solid #636363;
border-radius: 5px;
}
.QPushButton{
border-style: none;
border: 0px;
color: #F0F0F0;
padding: 5px;
min-height: 20px;
border-radius:5px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #4D4D4D, stop:1 #292929);
}
.QPushButton[focusPolicy="0"] {
border-style: none;
border: 0px;
color: #F0F0F0;
padding: 0px;
min-height: 10px;
border-radius:3px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #4D4D4D, stop:1 #292929);
}
.QPushButton:hover{
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #636363, stop:1 #575757);
}
.QPushButton:pressed{
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #4D4D4D, stop:1 #292929);
}
QPushButton#btnMenu,QPushButton#btnMenu_Min,QPushButton#btnMenu_Max,QPushButton#btnMenu_Close{
border-radius:0px;
color: #F0F0F0;
background-color:rgba(0,0,0,0);
border-style:none;
}
QPushButton#btnMenu:hover,QPushButton#btnMenu_Min:hover,QPushButton#btnMenu_Max:hover{
background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:0, y2:0, stop:0 rgba(25, 134, 199, 0), stop:1 #636363);
}
QPushButton#btnMenu_Close:hover{
background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:0, y2:0, stop:0 rgba(238, 0, 0, 128), stop:1 rgba(238, 44, 44, 255));
}
QCheckBox {
spacing: 2px;
}
QCheckBox::indicator {
width: 20px;
height: 20px;
}
QCheckBox::indicator:unchecked {
image: url(:/image/checkbox_unchecked.png);
}
QCheckBox::indicator:checked {
image: url(:/image/checkbox_checked.png);
}
QRadioButton {
spacing: 2px;
}
QRadioButton::indicator {
width: 15px;
height: 15px;
}
QRadioButton::indicator::unchecked {
image: url(:/image/radio_normal.png);
}
QRadioButton::indicator::checked {
image: url(:/image/radio_selected.png);
}
QComboBox,QDateEdit{
border-radius: 3px;
padding: 1px 10px 1px 5px;
border: 1px solid #636363;
}
QComboBox::drop-down,QDateEdit::drop-down {
subcontrol-origin: padding;
subcontrol-position: top right;
width: 15px;
border-left-width: 1px;
border-left-style: solid;
border-top-right-radius: 3px;
border-bottom-right-radius: 3px;
border-left-color: #636363;
}
QComboBox::down-arrow,QDateEdit::down-arrow {
image: url(:/image/array_down.png);
}
QMenu {
background-color:#F0F0F0;
margin: 2px;
}
QMenu::item {
padding: 2px 12px 2px 12px;
}
QMenu::indicator {
width: 13px;
height: 13px;
}
QMenu::item:selected {
color: #F0F0F0;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #4D4D4D, stop:1 #292929);
}
QMenu::separator {
height: 1px;
background: #636363;
}
QProgressBar {
border-radius: 5px;
text-align: center;
border: 1px solid #636363;
}
QProgressBar::chunk {
width: 5px;
margin: 0.5px;
background-color: #4D4D4D;
}
QSlider::groove:horizontal,QSlider::add-page:horizontal {
background: #808080;
height: 8px;
border-radius: 3px;
}
QSlider::sub-page:horizontal {
height: 8px;
border-radius: 3px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #4D4D4D, stop:1 #292929);
}
QSlider::handle:horizontal {
width: 13px;
margin-top: -3px;
margin-bottom: -3px;
border-radius: 6px;
background: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5,stop:0.6 #F0F0F0, stop:0.778409 #636363);
}
QSlider::handle:horizontal:hover {
background: qradialgradient(spread: pad, cx: 0.5, cy: 0.5, radius: 0.5, fx: 0.5, fy: 0.5, stop: 0.6 #F0F0F0,stop:0.778409 #4D4D4D);
}
QSlider::groove:vertical,QSlider::sub-page:vertical {
background:#808080;
width: 8px;
border-radius: 3px;
}
QSlider::add-page:vertical {
width: 8px;
border-radius: 3px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #4D4D4D, stop:1 #292929);
}
QSlider::handle:vertical {
height: 14px;
margin-left: -3px;
margin-right: -3px;
border-radius: 6px;
background: qradialgradient(spread: pad, cx: 0.5, cy: 0.5, radius: 0.5, fx: 0.5, fy: 0.5, stop: 0.6 #F0F0F0, stop:0.778409 #636363);
}
QSlider::handle:vertical:hover {
background: qradialgradient(spread: pad, cx: 0.5, cy: 0.5, radius: 0.5, fx: 0.5, fy: 0.5, stop: 0.6 #F0F0F0,stop:0.778409 #4D4D4D);
}
QScrollBar:vertical {
width:10px;
background-color:rgba(0,0,0,0%);
padding-top:10px;
padding-bottom:10px;
}
QScrollBar:horizontal {
height:10px;
background-color:rgba(0,0,0,0%);
padding-left:10px; padding-right:10px;
}
QScrollBar::handle:vertical {
width:10px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #636363, stop:1 #575757);
}
QScrollBar::handle:horizontal {
height:10px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #636363, stop:1 #575757);
}
QScrollBar::handle:vertical:hover {
width:10px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #4D4D4D, stop:1 #292929);
}
QScrollBar::handle:horizontal:hover {
height:10px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #4D4D4D, stop:1 #292929);
}
QScrollBar::add-line:vertical {
height:10px;
width:10px;
subcontrol-position: bottom;
subcontrol-origin: margin;
border-image:url(:/image/add-line_vertical.png);
}
QScrollBar::add-line:horizontal {
height:10px;
width:10px;
subcontrol-position: right;
subcontrol-origin: margin;
border-image:url(:/image/add-line_horizontal.png);
}
QScrollBar::sub-line:vertical {
height:10px;
width:10px;
subcontrol-position: top;
subcontrol-origin: margin;
border-image:url(:/image/sub-line_vertical.png);
}
QScrollBar::sub-line:horizontal {
height:10px;
width:10px;
subcontrol-position: left;
subcontrol-origin: margin;
border-image:url(:/image/sub-line_horizontal.png);
}
QScrollBar::add-page:vertical,QScrollBar::sub-page:vertical {
width:10px;
background: #C0C0C0;
}
QScrollBar::add-page:horizontal,QScrollBar::sub-page:horizontal {
height:10px;
background: #C0C0C0;
}
QScrollArea {
border: 0px ;
}
QTreeView,QListView,QTableView{
border: 1px solid #636363;
selection-background-color: #4D4D4D;
selection-color: #F0F0F0;
}
QTableView::item:selected, QListView::item:selected, QTreeView::item:selected {
color: #F0F0F0;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #4D4D4D, stop:1 #292929);
}
QTableView::item:hover, QListView::item:hover, QTreeView::item:hover {
color: #F0F0F0;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #636363, stop:1 #575757);
}
QTableView::item, QListView::item, QTreeView::item {
padding: 5px;
margin: 0px;
}
QHeaderView::section {
padding:3px;
margin:0px;
color:#F0F0F0;
border: 1px solid #F0F0F0;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #636363, stop:1 #575757);
}
QTabBar::tab {
border-bottom-left-radius:0px;
border-bottom-right-radius:0px;
color: #F0F0F0;
min-width: 60px;
min-height: 20px;
padding: 3px 8px 3px 8px;
margin:1px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #636363, stop:1 #575757);
}
QTabBar::tab:selected, QTabBar::tab:hover {
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #4D4D4D, stop:1 #292929);
}
QStatusBar::item {
border: 1px solid #636363;
border-radius: 3px;
}
\ No newline at end of file
QWidget#frmLogin,QWidget#frmPopup,QWidget#frmHostInfo,QWidget#frmLogout,QWidget#frmConfig,QWidget#frmData,QWidget#frmDefence,QWidget#frmHost,QWidget#frmMain,QWidget#frmPwd,QWidget#frmSelect,QWidget#frmMessageBox{
border:1px solid #1B89CA;
border-radius:0px;
}
.QFrame{
border:1px solid #5CACEE;
border-radius:5px;
}
QWidget#widget_title{
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #1B89CA, stop:1 #1077B5);
}
QLabel#lab_Ico,QLabel#lab_Title{
border-radius:0px;
color: #F0F0F0;
background-color:rgba(0,0,0,0);
border-style:none;
}
QLineEdit {
border: 1px solid #5CACEE;
border-radius: 5px;
padding: 2px;
background: none;
selection-background-color: #1B89CA;
}
QLineEdit[echoMode="2"] {
lineedit-password-character: 9679;
}
.QGroupBox{
border: 1px solid #5CACEE;
border-radius: 5px;
}
.QPushButton{
border-style: none;
border: 0px;
color: #F0F0F0;
padding: 5px;
min-height: 20px;
border-radius:5px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #1B89CA, stop:1 #1077B5);
}
.QPushButton[focusPolicy="0"] {
border-style: none;
border: 0px;
color: #F0F0F0;
padding: 0px;
min-height: 10px;
border-radius:3px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #1B89CA, stop:1 #1077B5);
}
.QPushButton:hover{
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #5CACEE, stop:1 #4F94CD);
}
.QPushButton:pressed{
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #1B89CA, stop:1 #1077B5);
}
QPushButton#btnMenu,QPushButton#btnMenu_Min,QPushButton#btnMenu_Max,QPushButton#btnMenu_Close{
border-radius:0px;
color: #F0F0F0;
background-color:rgba(0,0,0,0);
border-style:none;
}
QPushButton#btnMenu:hover,QPushButton#btnMenu_Min:hover,QPushButton#btnMenu_Max:hover{
background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:0, y2:0, stop:0 rgba(25, 134, 199, 0), stop:1 #5CACEE);
}
QPushButton#btnMenu_Close:hover{
background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:0, y2:0, stop:0 rgba(238, 0, 0, 128), stop:1 rgba(238, 44, 44, 255));
}
QCheckBox {
spacing: 2px;
}
QCheckBox::indicator {
width: 20px;
height: 20px;
}
QCheckBox::indicator:unchecked {
image: url(:/image/checkbox_unchecked.png);
}
QCheckBox::indicator:checked {
image: url(:/image/checkbox_checked.png);
}
QRadioButton {
spacing: 2px;
}
QRadioButton::indicator {
width: 15px;
height: 15px;
}
QRadioButton::indicator::unchecked {
image: url(:/image/radio_normal.png);
}
QRadioButton::indicator::checked {
image: url(:/image/radio_selected.png);
}
QComboBox,QDateEdit{
border-radius: 3px;
padding: 1px 10px 1px 5px;
border: 1px solid #5CACEE;
}
QComboBox::drop-down,QDateEdit::drop-down {
subcontrol-origin: padding;
subcontrol-position: top right;
width: 15px;
border-left-width: 1px;
border-left-style: solid;
border-top-right-radius: 3px;
border-bottom-right-radius: 3px;
border-left-color: #5CACEE;
}
QComboBox::down-arrow,QDateEdit::down-arrow {
image: url(:/image/array_down.png);
}
QMenu {
background-color:#F0F0F0;
margin: 2px;
}
QMenu::item {
padding: 2px 12px 2px 12px;
}
QMenu::indicator {
width: 13px;
height: 13px;
}
QMenu::item:selected {
color: #FFFFFF;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #1B89CA, stop:1 #1077B5);
}
QMenu::separator {
height: 1px;
background: #5CACEE;
}
QProgressBar {
border-radius: 5px;
text-align: center;
border: 1px solid #5CACEE;
}
QProgressBar::chunk {
width: 5px;
margin: 0.5px;
background-color: #1B89CA;
}
QSlider::groove:horizontal,QSlider::add-page:horizontal {
background: #808080;
height: 8px;
border-radius: 3px;
}
QSlider::sub-page:horizontal {
height: 8px;
border-radius: 3px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #1B89CA, stop:1 #1077B5);
}
QSlider::handle:horizontal {
width: 13px;
margin-top: -3px;
margin-bottom: -3px;
border-radius: 6px;
background: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5,stop:0.6 #F0F0F0, stop:0.778409 #5CACEE);
}
QSlider::handle:horizontal:hover {
background: qradialgradient(spread: pad, cx: 0.5, cy: 0.5, radius: 0.5, fx: 0.5, fy: 0.5, stop: 0.6 #F0F0F0,stop:0.778409 #1B89CA);
}
QSlider::groove:vertical,QSlider::sub-page:vertical {
background:#808080;
width: 8px;
border-radius: 3px;
}
QSlider::add-page:vertical {
width: 8px;
border-radius: 3px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #1B89CA, stop:1 #1077B5);
}
QSlider::handle:vertical {
height: 14px;
margin-left: -3px;
margin-right: -3px;
border-radius: 6px;
background: qradialgradient(spread: pad, cx: 0.5, cy: 0.5, radius: 0.5, fx: 0.5, fy: 0.5, stop: 0.6 #F0F0F0, stop:0.778409 #5CACEE);
}
QSlider::handle:vertical:hover {
background: qradialgradient(spread: pad, cx: 0.5, cy: 0.5, radius: 0.5, fx: 0.5, fy: 0.5, stop: 0.6 #F0F0F0,stop:0.778409 #1B89CA);
}
QScrollBar:vertical {
width:10px;
background-color:rgba(0,0,0,0%);
padding-top:10px;
padding-bottom:10px;
}
QScrollBar:horizontal {
height:10px;
background-color:rgba(0,0,0,0%);
padding-left:10px; padding-right:10px;
}
QScrollBar::handle:vertical {
width:10px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #5CACEE, stop:1 #4F94CD);
}
QScrollBar::handle:horizontal {
height:10px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #5CACEE, stop:1 #4F94CD);
}
QScrollBar::handle:vertical:hover {
width:10px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #1B89CA, stop:1 #1077B5);
}
QScrollBar::handle:horizontal:hover {
height:10px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #1B89CA, stop:1 #1077B5);
}
QScrollBar::add-line:vertical {
height:10px;
width:10px;
subcontrol-position: bottom;
subcontrol-origin: margin;
border-image:url(:/image/add-line_vertical.png);
}
QScrollBar::add-line:horizontal {
height:10px;
width:10px;
subcontrol-position: right;
subcontrol-origin: margin;
border-image:url(:/image/add-line_horizontal.png);
}
QScrollBar::sub-line:vertical {
height:10px;
width:10px;
subcontrol-position: top;
subcontrol-origin: margin;
border-image:url(:/image/sub-line_vertical.png);
}
QScrollBar::sub-line:horizontal {
height:10px;
width:10px;
subcontrol-position: left;
subcontrol-origin: margin;
border-image:url(:/image/sub-line_horizontal.png);
}
QScrollBar::add-page:vertical,QScrollBar::sub-page:vertical {
width:10px;
background: #C0C0C0;
}
QScrollBar::add-page:horizontal,QScrollBar::sub-page:horizontal {
height:10px;
background: #C0C0C0;
}
QScrollArea {
border: 0px ;
}
QTreeView,QListView,QTableView{
border: 1px solid #5CACEE;
selection-background-color: #1B89CA;
selection-color: #F0F0F0;
}
QTableView::item:selected, QListView::item:selected, QTreeView::item:selected {
color: #F0F0F0;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #1B89CA, stop:1 #1077B5);
}
QTableView::item:hover, QListView::item:hover, QTreeView::item:hover {
color: #F0F0F0;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #5CACEE, stop:1 #4F94CD);
}
QTableView::item, QListView::item, QTreeView::item {
padding: 5px;
margin: 0px;
}
QHeaderView::section {
padding:3px;
margin:0px;
color:#F0F0F0;
border: 1px solid #F0F0F0;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #5CACEE, stop:1 #4F94CD);
}
QTabBar::tab {
border-bottom-left-radius:0px;
border-bottom-right-radius:0px;
color: #F0F0F0;
min-width: 60px;
min-height: 20px;
padding: 3px 8px 3px 8px;
margin:1px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #5CACEE, stop:1 #4F94CD);
}
QTabBar::tab:selected, QTabBar::tab:hover {
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #1B89CA, stop:1 #1077B5);
}
QStatusBar::item {
border: 1px solid #5CACEE;
border-radius: 3px;
}
\ No newline at end of file
QWidget#frmLogin,QWidget#frmPopup,QWidget#frmHostInfo,QWidget#frmLogout,QWidget#frmConfig,QWidget#frmData,QWidget#frmDefence,QWidget#frmHost,QWidget#frmMain,QWidget#frmPwd,QWidget#frmSelect,QWidget#frmMessageBox{
border:1px solid #454648;
border-radius:0px;
}
.QFrame{
border:1px solid #B8B8B8;
border-radius:5px;
}
QWidget#widget_title{
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #454648, stop:1 #7A7A7A);
}
QLabel#lab_Ico,QLabel#lab_Title{
border-radius:0px;
color: #F0F0F0;
background-color:rgba(0,0,0,0);
border-style:none;
}
QLineEdit {
border: 1px solid #B8B8B8;
border-radius: 5px;
padding: 2px;
background: none;
selection-background-color: #454648;
}
QLineEdit[echoMode="2"] {
lineedit-password-character: 9679;
}
.QGroupBox{
border: 1px solid #B8B8B8;
border-radius: 5px;
}
.QPushButton{
border-style: none;
border: 0px;
color: #F0F0F0;
padding: 5px;
min-height: 20px;
border-radius:5px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #454648, stop:1 #7A7A7A);
}
.QPushButton[focusPolicy="0"] {
border-style: none;
border: 0px;
color: #F0F0F0;
padding: 0px;
min-height: 10px;
border-radius:3px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #454648, stop:1 #7A7A7A);
}
.QPushButton:hover{
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #B8B8B8, stop:1 #D6D6D6);
}
.QPushButton:pressed{
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #454648, stop:1 #7A7A7A);
}
QPushButton#btnMenu,QPushButton#btnMenu_Min,QPushButton#btnMenu_Max,QPushButton#btnMenu_Close{
border-radius:0px;
color: #F0F0F0;
background-color:rgba(0,0,0,0);
border-style:none;
}
QPushButton#btnMenu:hover,QPushButton#btnMenu_Min:hover,QPushButton#btnMenu_Max:hover{
background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:0, y2:0, stop:0 rgba(25, 134, 199, 0), stop:1 #B8B8B8);
}
QPushButton#btnMenu_Close:hover{
background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:0, y2:0, stop:0 rgba(238, 0, 0, 128), stop:1 rgba(238, 44, 44, 255));
}
QCheckBox {
spacing: 2px;
}
QCheckBox::indicator {
width: 20px;
height: 20px;
}
QCheckBox::indicator:unchecked {
image: url(:/image/checkbox_unchecked.png);
}
QCheckBox::indicator:checked {
image: url(:/image/checkbox_checked.png);
}
QRadioButton {
spacing: 2px;
}
QRadioButton::indicator {
width: 15px;
height: 15px;
}
QRadioButton::indicator::unchecked {
image: url(:/image/radio_normal.png);
}
QRadioButton::indicator::checked {
image: url(:/image/radio_selected.png);
}
QComboBox,QDateEdit{
border-radius: 3px;
padding: 1px 10px 1px 5px;
border: 1px solid #B8B8B8;
}
QComboBox::drop-down,QDateEdit::drop-down {
subcontrol-origin: padding;
subcontrol-position: top right;
width: 15px;
border-left-width: 1px;
border-left-style: solid;
border-top-right-radius: 3px;
border-bottom-right-radius: 3px;
border-left-color: #B8B8B8;
}
QComboBox::down-arrow,QDateEdit::down-arrow {
image: url(:/image/array_down.png);
}
QMenu {
background-color:#F0F0F0;
margin: 2px;
}
QMenu::item {
padding: 2px 12px 2px 12px;
}
QMenu::indicator {
width: 13px;
height: 13px;
}
QMenu::item:selected {
color: #F0F0F0;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #454648, stop:1 #7A7A7A);
}
QMenu::separator {
height: 1px;
background: #B8B8B8;
}
QProgressBar {
border-radius: 5px;
text-align: center;
border: 1px solid #B8B8B8;
}
QProgressBar::chunk {
width: 5px;
margin: 0.5px;
background-color: #454648;
}
QSlider::groove:horizontal,QSlider::add-page:horizontal {
background: #808080;
height: 8px;
border-radius: 3px;
}
QSlider::sub-page:horizontal {
height: 8px;
border-radius: 3px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #454648, stop:1 #7A7A7A);
}
QSlider::handle:horizontal {
width: 13px;
margin-top: -3px;
margin-bottom: -3px;
border-radius: 6px;
background: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5,stop:0.6 #F0F0F0, stop:0.778409 #B8B8B8);
}
QSlider::handle:horizontal:hover {
background: qradialgradient(spread: pad, cx: 0.5, cy: 0.5, radius: 0.5, fx: 0.5, fy: 0.5, stop: 0.6 #F0F0F0,stop:0.778409 #454648);
}
QSlider::groove:vertical,QSlider::sub-page:vertical {
background:#808080;
width: 8px;
border-radius: 3px;
}
QSlider::add-page:vertical {
width: 8px;
border-radius: 3px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #454648, stop:1 #7A7A7A);
}
QSlider::handle:vertical {
height: 14px;
margin-left: -3px;
margin-right: -3px;
border-radius: 6px;
background: qradialgradient(spread: pad, cx: 0.5, cy: 0.5, radius: 0.5, fx: 0.5, fy: 0.5, stop: 0.6 #F0F0F0, stop:0.778409 #B8B8B8);
}
QSlider::handle:vertical:hover {
background: qradialgradient(spread: pad, cx: 0.5, cy: 0.5, radius: 0.5, fx: 0.5, fy: 0.5, stop: 0.6 #F0F0F0,stop:0.778409 #454648);
}
QScrollBar:vertical {
width:10px;
background-color:rgba(0,0,0,0%);
padding-top:10px;
padding-bottom:10px;
}
QScrollBar:horizontal {
height:10px;
background-color:rgba(0,0,0,0%);
padding-left:10px; padding-right:10px;
}
QScrollBar::handle:vertical {
width:10px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #B8B8B8, stop:1 #D6D6D6);
}
QScrollBar::handle:horizontal {
height:10px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #B8B8B8, stop:1 #D6D6D6);
}
QScrollBar::handle:vertical:hover {
width:10px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #454648, stop:1 #7A7A7A);
}
QScrollBar::handle:horizontal:hover {
height:10px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #454648, stop:1 #7A7A7A);
}
QScrollBar::add-line:vertical {
height:10px;
width:10px;
subcontrol-position: bottom;
subcontrol-origin: margin;
border-image:url(:/image/add-line_vertical.png);
}
QScrollBar::add-line:horizontal {
height:10px;
width:10px;
subcontrol-position: right;
subcontrol-origin: margin;
border-image:url(:/image/add-line_horizontal.png);
}
QScrollBar::sub-line:vertical {
height:10px;
width:10px;
subcontrol-position: top;
subcontrol-origin: margin;
border-image:url(:/image/sub-line_vertical.png);
}
QScrollBar::sub-line:horizontal {
height:10px;
width:10px;
subcontrol-position: left;
subcontrol-origin: margin;
border-image:url(:/image/sub-line_horizontal.png);
}
QScrollBar::add-page:vertical,QScrollBar::sub-page:vertical {
width:10px;
background: #C0C0C0;
}
QScrollBar::add-page:horizontal,QScrollBar::sub-page:horizontal {
height:10px;
background: #C0C0C0;
}
QScrollArea {
border: 0px ;
}
QTreeView,QListView,QTableView{
border: 1px solid #B8B8B8;
selection-background-color: #454648;
selection-color: #F0F0F0;
}
QTableView::item:selected, QListView::item:selected, QTreeView::item:selected {
color: #F0F0F0;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #454648, stop:1 #7A7A7A);
}
QTableView::item:hover, QListView::item:hover, QTreeView::item:hover {
color: #F0F0F0;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #B8B8B8, stop:1 #D6D6D6);
}
QTableView::item, QListView::item, QTreeView::item {
padding: 5px;
margin: 0px;
}
QHeaderView::section {
padding:3px;
margin:0px;
color:#F0F0F0;
border: 1px solid #F0F0F0;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #B8B8B8, stop:1 #D6D6D6);
}
QTabBar::tab {
border-bottom-left-radius:0px;
border-bottom-right-radius:0px;
color: #F0F0F0;
min-width: 60px;
min-height: 20px;
padding: 3px 8px 3px 8px;
margin:1px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #B8B8B8, stop:1 #D6D6D6);
}
QTabBar::tab:selected, QTabBar::tab:hover {
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #454648, stop:1 #7A7A7A);
}
QStatusBar::item {
border: 1px solid #B8B8B8;
border-radius: 3px;
}
\ No newline at end of file
QWidget#frmLogin,QWidget#frmPopup,QWidget#frmHostInfo,QWidget#frmLogout,QWidget#frmConfig,QWidget#frmData,QWidget#frmDefence,QWidget#frmHost,QWidget#frmMain,QWidget#frmPwd,QWidget#frmSelect,QWidget#frmMessageBox{
border:1px solid #0F7DBE;
border-radius:0px;
}
.QFrame{
border:1px solid #50A3F0;
border-radius:5px;
}
QWidget#widget_title{
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #0F7DBE, stop:1 #1582C3);
}
QLabel#lab_Ico,QLabel#lab_Title{
border-radius:0px;
color: #F0F0F0;
background-color:rgba(0,0,0,0);
border-style:none;
}
QLineEdit {
border: 1px solid #50A3F0;
border-radius: 5px;
padding: 2px;
background: none;
selection-background-color: #0F7DBE;
}
QLineEdit[echoMode="2"] {
lineedit-password-character: 9679;
}
.QGroupBox{
border: 1px solid #50A3F0;
border-radius: 5px;
}
.QPushButton{
border-style: none;
border: 0px;
color: #F0F0F0;
padding: 5px;
min-height: 20px;
border-radius:5px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #0F7DBE, stop:1 #1582C3);
}
.QPushButton[focusPolicy="0"] {
border-style: none;
border: 0px;
color: #F0F0F0;
padding: 0px;
min-height: 10px;
border-radius:3px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #0F7DBE, stop:1 #1582C3);
}
.QPushButton:hover{
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #50A3F0, stop:1 #489CEA);
}
.QPushButton:pressed{
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #0F7DBE, stop:1 #1582C3);
}
QPushButton#btnMenu,QPushButton#btnMenu_Min,QPushButton#btnMenu_Max,QPushButton#btnMenu_Close{
border-radius:0px;
color: #F0F0F0;
background-color:rgba(0,0,0,0);
border-style:none;
}
QPushButton#btnMenu:hover,QPushButton#btnMenu_Min:hover,QPushButton#btnMenu_Max:hover{
background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:0, y2:0, stop:0 rgba(25, 134, 199, 0), stop:1 #50A3F0);
}
QPushButton#btnMenu_Close:hover{
background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:0, y2:0, stop:0 rgba(238, 0, 0, 128), stop:1 rgba(238, 44, 44, 255));
}
QCheckBox {
spacing: 2px;
}
QCheckBox::indicator {
width: 20px;
height: 20px;
}
QCheckBox::indicator:unchecked {
image: url(:/image/checkbox_unchecked.png);
}
QCheckBox::indicator:checked {
image: url(:/image/checkbox_checked.png);
}
QRadioButton {
spacing: 2px;
}
QRadioButton::indicator {
width: 15px;
height: 15px;
}
QRadioButton::indicator::unchecked {
image: url(:/image/radio_normal.png);
}
QRadioButton::indicator::checked {
image: url(:/image/radio_selected.png);
}
QComboBox,QDateEdit{
border-radius: 3px;
padding: 1px 10px 1px 5px;
border: 1px solid #50A3F0;
}
QComboBox::drop-down,QDateEdit::drop-down {
subcontrol-origin: padding;
subcontrol-position: top right;
width: 15px;
border-left-width: 1px;
border-left-style: solid;
border-top-right-radius: 3px;
border-bottom-right-radius: 3px;
border-left-color: #50A3F0;
}
QComboBox::down-arrow,QDateEdit::down-arrow {
image: url(:/image/array_down.png);
}
QMenu {
background-color:#F0F0F0;
margin: 2px;
}
QMenu::item {
padding: 2px 12px 2px 12px;
}
QMenu::indicator {
width: 13px;
height: 13px;
}
QMenu::item:selected {
color: #F0F0F0;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #0F7DBE, stop:1 #1582C3);
}
QMenu::separator {
height: 1px;
background: #50A3F0;
}
QProgressBar {
border-radius: 5px;
text-align: center;
border: 1px solid #50A3F0;
}
QProgressBar::chunk {
width: 5px;
margin: 0.5px;
background-color: #0F7DBE;
}
QSlider::groove:horizontal,QSlider::add-page:horizontal {
background: #808080;
height: 8px;
border-radius: 3px;
}
QSlider::sub-page:horizontal {
height: 8px;
border-radius: 3px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #0F7DBE, stop:1 #1582C3);
}
QSlider::handle:horizontal {
width: 13px;
margin-top: -3px;
margin-bottom: -3px;
border-radius: 6px;
background: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5,stop:0.6 #F0F0F0, stop:0.778409 #50A3F0);
}
QSlider::handle:horizontal:hover {
background: qradialgradient(spread: pad, cx: 0.5, cy: 0.5, radius: 0.5, fx: 0.5, fy: 0.5, stop: 0.6 #F0F0F0,stop:0.778409 #0F7DBE);
}
QSlider::groove:vertical,QSlider::sub-page:vertical {
background:#808080;
width: 8px;
border-radius: 3px;
}
QSlider::add-page:vertical {
width: 8px;
border-radius: 3px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #0F7DBE, stop:1 #1582C3);
}
QSlider::handle:vertical {
height: 14px;
margin-left: -3px;
margin-right: -3px;
border-radius: 6px;
background: qradialgradient(spread: pad, cx: 0.5, cy: 0.5, radius: 0.5, fx: 0.5, fy: 0.5, stop: 0.6 #F0F0F0, stop:0.778409 #50A3F0);
}
QSlider::handle:vertical:hover {
background: qradialgradient(spread: pad, cx: 0.5, cy: 0.5, radius: 0.5, fx: 0.5, fy: 0.5, stop: 0.6 #F0F0F0,stop:0.778409 #0F7DBE);
}
QScrollBar:vertical {
width:10px;
background-color:rgba(0,0,0,0%);
padding-top:10px;
padding-bottom:10px;
}
QScrollBar:horizontal {
height:10px;
background-color:rgba(0,0,0,0%);
padding-left:10px; padding-right:10px;
}
QScrollBar::handle:vertical {
width:10px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #50A3F0, stop:1 #489CEA);
}
QScrollBar::handle:horizontal {
height:10px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #50A3F0, stop:1 #489CEA);
}
QScrollBar::handle:vertical:hover {
width:10px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #0F7DBE, stop:1 #1582C3);
}
QScrollBar::handle:horizontal:hover {
height:10px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #0F7DBE, stop:1 #1582C3);
}
QScrollBar::add-line:vertical {
height:10px;
width:10px;
subcontrol-position: bottom;
subcontrol-origin: margin;
border-image:url(:/image/add-line_vertical.png);
}
QScrollBar::add-line:horizontal {
height:10px;
width:10px;
subcontrol-position: right;
subcontrol-origin: margin;
border-image:url(:/image/add-line_horizontal.png);
}
QScrollBar::sub-line:vertical {
height:10px;
width:10px;
subcontrol-position: top;
subcontrol-origin: margin;
border-image:url(:/image/sub-line_vertical.png);
}
QScrollBar::sub-line:horizontal {
height:10px;
width:10px;
subcontrol-position: left;
subcontrol-origin: margin;
border-image:url(:/image/sub-line_horizontal.png);
}
QScrollBar::add-page:vertical,QScrollBar::sub-page:vertical {
width:10px;
background: #C0C0C0;
}
QScrollBar::add-page:horizontal,QScrollBar::sub-page:horizontal {
height:10px;
background: #C0C0C0;
}
QScrollArea {
border: 0px ;
}
QTreeView,QListView,QTableView{
border: 1px solid #50A3F0;
selection-background-color: #0F7DBE;
selection-color: #F0F0F0;
}
QTableView::item:selected, QListView::item:selected, QTreeView::item:selected {
color: #F0F0F0;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #0F7DBE, stop:1 #1582C3);
}
QTableView::item:hover, QListView::item:hover, QTreeView::item:hover {
color: #F0F0F0;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #50A3F0, stop:1 #489CEA);
}
QTableView::item, QListView::item, QTreeView::item {
padding: 5px;
margin: 0px;
}
QHeaderView::section {
padding:3px;
margin:0px;
color:#F0F0F0;
border: 1px solid #F0F0F0;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #50A3F0, stop:1 #489CEA);
}
QTabBar::tab {
border-bottom-left-radius:0px;
border-bottom-right-radius:0px;
color: #F0F0F0;
min-width: 60px;
min-height: 20px;
padding: 3px 8px 3px 8px;
margin:1px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #50A3F0, stop:1 #489CEA);
}
QTabBar::tab:selected, QTabBar::tab:hover {
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #0F7DBE, stop:1 #1582C3);
}
QStatusBar::item {
border: 1px solid #50A3F0;
border-radius: 3px;
}
\ No newline at end of file
#include "logindlg.h"
#include "ui_logindlg.h"
#include "sqliteassistant/sqliteassistant.h"
#include "myhelper.h"
LoginDlg::LoginDlg(QWidget *parent) :
QDialog(parent),
ui(new Ui::LoginDlg)
{
ui->setupUi(this);
m_MainWindow = new MainWindow();
lab_tip = new QLabel(this);
timer_tip = new QTimer(this);
lab_tip->setSizeIncrement(200,20);
connect(timer_tip,&QTimer::timeout,this,[=](){
timer_tip->stop();
lab_tip->close();
});
connect(ui->pbn_close,&QPushButton::clicked,this,&MainWindow::close);
connect(ui->pbn_login,&QPushButton::clicked,this,[=](){
if(!LoginJudgment()){
return;
}else{
m_MainWindow->show();
this->close();
}
});
setWindowTitle("用户登陆");
LoadStyleSheet();
InitGui();
}
void LoginDlg::LoadStyleSheet()
{
QFile qss(":/image/Login_Dialog.qss");
qss.open(QFile::ReadOnly);
this->setStyleSheet(qss.readAll());
qss.close();
}
bool LoginDlg::LoginJudgment()
{
lab_tip->setStyleSheet("QLabel{background: transparent;border: 1px solid transparent;"
"color:rgb(255,0,0);font-weight: bold;font: 25 10pt Microsoft YaHei;padding: 1px;}");
lab_tip->move(this->width()/2 - 90,this->height()- ui->pbn_login->height());
QString user = m_SqliteAssistant->Select_AdminInfoName();
QString pwd = m_SqliteAssistant->Select_AdminInfo("admin");
QString rootuser = "root";
QString m_user = ui->lineEdit_user->text();
QString m_pwd = ui->lineEdit_pwd->text();
if(m_user == user && m_pwd == pwd ){
return true;
}
if(m_user == rootuser && m_pwd == pwd ){
//config->show();
this->close();
}
if(m_user == user && m_pwd != pwd){
lab_tip->setText("密码错误,请重新输入");
ui->lineEdit_pwd->clear();
ui->lineEdit_pwd->setFocus();
lab_tip->adjustSize();
lab_tip->show();
timer_tip->start(2000);
return false;
}
if(m_user != user && m_pwd == pwd){
lab_tip->setText("用户名错误,请重新输入");
ui->lineEdit_user->clear();
ui->lineEdit_user->setFocus();
lab_tip->adjustSize();
lab_tip->show();
timer_tip->start(2000);
return false;
}
if(m_user != user && m_pwd != pwd){
lab_tip->setText("用户名和密码错误,请重新输入");
ui->lineEdit_pwd->clear();
ui->lineEdit_user->clear();
ui->lineEdit_user->setFocus();
lab_tip->adjustSize();
lab_tip->show();
timer_tip->start(2000);
return false;
}
return false;
}
LoginDlg::~LoginDlg()
{
delete ui;
}
void LoginDlg::InitGui()
{
setWindowFlags(Qt::FramelessWindowHint|Qt::WindowStaysOnTopHint);
setAttribute(Qt::WA_TranslucentBackground);
ui->lab_title->setText("用户登陆");
ui->lab_name->setText("车辆ID管理系统");
ui->lineEdit_user->setFocus();
}
#ifndef LOGINDLG_H
#define LOGINDLG_H
#include <QDialog>
#include <QLabel>
#include <QTimer>
#include "mainwindow.h"
namespace Ui {
class LoginDlg;
}
class LoginDlg : public QDialog
{
Q_OBJECT
public:
explicit LoginDlg(QWidget *parent = nullptr);
~LoginDlg();
MainWindow *m_MainWindow;
private:
void InitGui();
void LoadStyleSheet();
//登录判断
bool LoginJudgment();
private:
Ui::LoginDlg *ui;
QLabel *lab_tip;
QTimer *timer_tip;
};
#endif // LOGINDLG_H
#include "mainwindow.h"
#include "myhelper.h"
#include <QApplication>
#include <QDebug>
#include "modeller_applog/applog.h" //日志
#include "sqliteassistant/sqliteassistant.h" //数据库助手
#include "logindlg.h" //登陆
#include <QProcess>
int LogKeepDay = 0; //日志保存天数,
//读取数据库信息
QString DataBase_ServerIP;
QString DataBase_ServerProt;
QString DataBase_ComName;
QString DataBase_ComBund;
SqliteAssistant *m_SqliteAssistant;
QString getInfo(const QString &cmd)
{
QProcess p; //启动外部程序
p.start(cmd); //一体式启动,不分离,主程序退出则启动程序退出,使用close关闭
//p.startDetached(cmd) //分离式启动,主程序退出后,外部程序继续运行。
p.waitForFinished(-1); //超时等待,设置为-1,直到执行完成。
QString result = QString::fromLocal8Bit(p.readAllStandardOutput());
QStringList list = cmd.split(" ");
result = result.remove(list.last(), Qt::CaseInsensitive);
result = result.replace("\r", "");
result = result.replace("\n", "");
result = result.simplified();
p.close();
return result;
}
//查询主板唯一标识
QString getBaseboardUuid()
{
return getInfo("wmic csproduct get uuid");
}
//查询CPU***
QString getCpuProcessorid()
{
return getInfo("wmic cpu get processorid");
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Singleton<AppLog>::getInstance().start();
Singleton<AppLog>::getInstance().onClearLogFile("./log",LogKeepDay);
m_SqliteAssistant = new SqliteAssistant();
if(0!=m_SqliteAssistant->connectSql())
{
qDebug()<<"connectSql error";
}
else
{
qDebug()<<"connectSql ok";
}
DataBase_ServerIP = m_SqliteAssistant->Select_SystemConfigInfo("ServerIP");
DataBase_ServerProt = m_SqliteAssistant->Select_SystemConfigInfo("ServerProt");
DataBase_ComName = m_SqliteAssistant->Select_SystemConfigInfo("ComName");
DataBase_ComBund = m_SqliteAssistant->Select_SystemConfigInfo("ComBund");
qDebug()<<DataBase_ServerIP;
qDebug()<<DataBase_ServerProt;
qDebug()<<DataBase_ComName;
qDebug()<<DataBase_ComBund;
//qDebug()<<getCpuProcessorid();
myHelper::SetStyle("blue");
LoginDlg login;
login.show();
return a.exec();
}
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QLabel>
#include <QMainWindow>
#include <QTimer>
#include "bridge.h"
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
void Windowsinit(); //界面设置
void SoftStart();
void SoftClose();
void EPCUpDate();
void PubClicked(); //快捷按键
QStringList getAvailablePort();
protected:
bool eventFilter(QObject *watched, QEvent *event);
// 重写事件处理器函数
void closeEvent(QCloseEvent* ev);
private:
Ui::MainWindow *ui;
Bridge *m_Bridge;
QLabel *m_systemTime;
QLabel *m_EPCstatus;
QTimer *m_SoftBreath;
int m_SoftBreath_s = 0;
int m_SoftBreath_m = 0;
int m_SoftBreath_h = 0;
int m_SoftBreath_d = 0;
};
#endif // MAINWINDOW_H
#include "applog.h"
#include <QMutex>
#include <QFile>
#include <QTextStream>
#include <QDir>
#include <QDate>
#include <QApplication>
QtMessageHandler messageHandler = NULL;
AppLog::AppLog()
{
}
AppLog::~AppLog()
{
}
void outputMessage(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
QString text;
switch(type)
{
case QtDebugMsg:
text = QString("Debug");
break;
case QtInfoMsg:
text = QString("Info");
break;
case QtWarningMsg:
text = QString("Warning");
break;
case QtCriticalMsg:
text = QString("Critical");
break;
case QtFatalMsg:
text = QString("Fatal");
}
QString context_info = QString("File:(%1) Line:(%2) Function:%3")
.arg(QString(context.file))
.arg(context.line)
.arg(context.function);
QString current_date_time = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss ddd");
QString current_date = QString("(%1)").arg(current_date_time);
QString message = QString("%1 %2 %3").arg(context_info).arg(msg).arg(current_date);
//加锁
static QMutex applog_mutex;
applog_mutex.lock();
//输出信息至文件中(读写、追加形式)
// QString logFileDir = QString("%1/log/%2")
// .arg(QApplication::applicationDirPath())
// .arg(QDate::currentDate().toString("yyyy-MM-dd"));
QString logFileDir = QString("%1/log")
.arg(QApplication::applicationDirPath());
// QString logFileName = QString("%1_%2_log.txt")
// .arg(QApplication::applicationName())
// .arg(text);
QString logFileName = QString("%1_%2_%3_log.txt")
.arg(QApplication::applicationName())
.arg(text)
.arg(QDate::currentDate().toString("yyyy-MM-dd"));
QDir logDir(logFileDir);
if (!logDir.exists())
logDir.mkpath(logFileDir);
QFile file(QString("%1/%2").arg(logFileDir).arg(logFileName));
file.open(QIODevice::WriteOnly | QIODevice::Append | QFile::Text);
QTextStream text_stream(&file);
text_stream << message << "\r\n";
file.flush();
file.close();
//解锁
applog_mutex.unlock();
//用系统原来的函数完成原来的功能. 比如输出到调试窗
if (messageHandler)
messageHandler(type, context, msg);
}
void AppLog::start()
{
//安装日志钩子
messageHandler = qInstallMessageHandler(outputMessage);
}
void AppLog::stop()
{
//卸载日志钩子
qInstallMessageHandler(0);
}
void AppLog::onClearLogFile(QString path, int keepLogDays)
{
QStringList fileList;
//需要清理文件的类型
QStringList filterList;
QString fileType = "*.txt";
filterList.append(fileType);
//获取目录内的文件列表
QDir dir = QDir(path);
Q_ASSERT(dir.exists());
fileList = dir.entryList(filterList, QDir::Files, QDir::Name);
QDateTime currDt = QDateTime::currentDateTime();
foreach (QString fileName, fileList)
{
//获取文件的创建时间
QFileInfo info(path + "/" + fileName);
QDateTime dt = info.created();
int days = dt.daysTo(currDt);
if(days > keepLogDays)
{
QFile::remove(path + "/" + fileName);
}
}
}
bool RemoveDir(QString dirPath)
{
if(dirPath.isEmpty())
return false;
QDir dir(dirPath);
if(!dir.exists())
return true;
for(QFileInfo info:dir.entryInfoList())
{
if(info.isFile())
{
QFile::remove(info.filePath());
}
else
{
RemoveDir(info.absoluteFilePath());
}
}
return dir.remove(dir.absolutePath());
}
#ifndef APPLOG_H
#define APPLOG_H
#include <QObject>
#include "singleton.h"
class AppLog
{
SINGLETON(AppLog)
public:
void start();
void stop();
void onClearLogFile(QString path, int keepLogDays);
};
#endif // APPLOG_H
#程序的记录员
HEADERS += \
$$PWD/applog.h
SOURCES += \
$$PWD/applog.cpp
#ifndef SINGLETON_H
#define SINGLETON_H
#include <QMutex>
#include <QScopedPointer>
/**
* 使用方法:
* 1. 定义类为单例:
* class ConnectionPool {
* SINGLETON(ConnectionPool) // Here
* public:
*
* 2. 获取单例类的对象:
* Singleton<ConnectionPool>::getInstance();
* ConnectionPool &pool = Singleton<ConnectionPool>::getInstance();
* 注意: 如果单例的类需要释放的资源和 Qt 底层的信号系统有关系,例如 QSettings,QSqlDatabase 等,
* 需要在程序结束前手动释放(也就是在 main() 函数返回前调用释放资源的函数,参考 ConnectionPool 的调用),
* 否则有可能在程序退出时报系统底层的信号错误,导致如 QSettings 的数据没有保存。
*/
template <typename T>
class Singleton {
public:
static T& getInstance();
Singleton(const Singleton &other);
Singleton<T>& operator=(const Singleton &other);
private:
//同步锁
static QMutex mutex;
//智能指针,只在该作用域存在,一旦出该作用域,就会自动销毁
static QScopedPointer<T> instance;
};
/*-----------------------------------------------------------------------------|
| Singleton implementation |
|----------------------------------------------------------------------------*/
template <typename T> QMutex Singleton<T>::mutex;
template <typename T> QScopedPointer<T> Singleton<T>::instance;
template <typename T>
T &Singleton<T>::getInstance()
{
if (instance.isNull()) {
mutex.lock();
if (instance.isNull()) {
//reset():delete目前指向的对象,调用其析构函数,将指针指向另一个对象other,所有权转移到other
instance.reset(new T());
}
mutex.unlock();
}
/**
* 获取智能指针动态创建的对象的指针有两种方法:QScopedPointer#data() 和 QScopedPointer#take()
* T *QScopedPointer::data() const返回指向对象的常量指针,QScopedPointer仍拥有对象所有权。
* 所以通过data()返回过后就被自动删除了,从而导致mian函数中的p1变成了野指针,程序崩溃.
* 使用T *QScopedPointer::take()也是返回对象指针,但QScopedPointer不再拥有对象所有权,而
* 是转移到调用这个函数的caller,同时QScopePointer对象指针置为NULL
*/
return *instance.data();
}
/*-----------------------------------------------------------------------------|
| Singleton Macro |
|----------------------------------------------------------------------------*/
/**
* QScopedPointerDeleter 是 QScopedPointer 的默认实现,使用delete删除指针
* 宏中不能使用 // 添加注释,换行续添加换行符 “\”
*
* 宏中已经申明了构造函数和析构函数,使用该宏的类直接写函数体即可,无需再次申明
*/
#define SINGLETON(Class) \
private: \
Class(); \
~Class(); \
Class(const Class &other); \
Class& operator=(const Class &other); \
friend class Singleton<Class>; /* 注释必须写在续行符("\")的前面 */ \
friend struct QScopedPointerDeleter<Class>;/* 末尾注释不需要加续行符 */
#endif // DBUTIL_H
#ifndef MYHELPER_H
#define MYHELPER_H
#include <QApplication>
#include <QDesktopWidget>
#include <QFile>
#include <QSettings>
#include <QTime>
#include <QTranslator>
#include "frmmessagebox.h"
class myHelper: public QObject
{
public:
//设置为开机启动
static void AutoRunWithSystem(bool IsAutoRun, QString AppName, QString AppPath)
{
QSettings *reg = new QSettings(
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
QSettings::NativeFormat);
if (IsAutoRun) {
reg->setValue(AppName, AppPath);
} else {
reg->setValue(AppName, "");
}
}
//设置编码为UTF8
static void SetUTF8Code()
{
#if (QT_VERSION <= QT_VERSION_CHECK(5,0,0))
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForTr(codec);
#endif
}
//设置皮肤样式
static void SetStyle(const QString &styleName)
{
QFile file(QString(":/image/%1.css").arg(styleName));
file.open(QFile::ReadOnly);
QString qss = QLatin1String(file.readAll());
qApp->setStyleSheet(qss);
qApp->setPalette(QPalette(QColor("#F0F0F0")));
}
//加载中文字符
static void SetChinese()
{
QTranslator *translator = new QTranslator(qApp);
translator->load(":/image/qt_zh_CN.qm");
qApp->installTranslator(translator);
}
//判断是否是IP地址
static bool IsIP(QString IP)
{
QRegExp RegExp("((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)");
return RegExp.exactMatch(IP);
}
//显示信息框,仅确定按钮
static void ShowMessageBoxInfo(QString info)
{
frmMessageBox *msg = new frmMessageBox;
msg->SetMessage(info, 0);
msg->exec();
}
//显示错误框,仅确定按钮
static void ShowMessageBoxError(QString info)
{
frmMessageBox *msg = new frmMessageBox;
msg->SetMessage(info, 2);
msg->exec();
}
//显示询问框,确定和取消按钮
static int ShowMessageBoxQuesion(QString info)
{
frmMessageBox *msg = new frmMessageBox;
msg->SetMessage(info, 1);
return msg->exec();
}
//延时
static void Sleep(int sec)
{
QTime dieTime = QTime::currentTime().addMSecs(sec);
while ( QTime::currentTime() < dieTime ) {
QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
}
}
//窗体居中显示
static void FormInCenter(QWidget *frm)
{
int frmX = frm->width();
int frmY = frm->height();
QDesktopWidget w;
int deskWidth = w.width();
int deskHeight = w.height();
QPoint movePoint(deskWidth / 2 - frmX / 2, deskHeight / 2 - frmY / 2);
frm->move(movePoint);
}
};
#endif // MYHELPER_H
temp/obj/bridge.o
temp/obj/frmmessagebox.o
temp/obj/iconhelper.o
temp/obj/logindlg.o
temp/obj/main.o
temp/obj/mainwindow.o
temp/obj/applog.o
temp/obj/sqliteassistant.o
temp/obj/readepccontrol.o
temp/obj/comchange.o
temp/obj/porttest.o
temp/obj/qrc_image.o
temp/obj/moc_bridge.o
temp/obj/moc_frmmessagebox.o
temp/obj/moc_logindlg.o
temp/obj/moc_mainwindow.o
temp/obj/moc_sqliteassistant.o
temp/obj/moc_readepccontrol.o
temp/obj/moc_comchange.o
temp/obj/moc_porttest.o
temp/obj/bridge.o
temp/obj/frmmessagebox.o
temp/obj/iconhelper.o
temp/obj/logindlg.o
temp/obj/main.o
temp/obj/mainwindow.o
temp/obj/applog.o
temp/obj/sqliteassistant.o
temp/obj/readepccontrol.o
temp/obj/comchange.o
temp/obj/porttest.o
temp/obj/qrc_image.o
temp/obj/moc_bridge.o
temp/obj/moc_frmmessagebox.o
temp/obj/moc_logindlg.o
temp/obj/moc_mainwindow.o
temp/obj/moc_sqliteassistant.o
temp/obj/moc_readepccontrol.o
temp/obj/moc_comchange.o
temp/obj/moc_porttest.o
HEADERS += \
$$PWD/readepccontrol.h
SOURCES += \
$$PWD/readepccontrol.cpp
#include "readepccontrol.h"
#include <QDebug>
ReadEPCControl::ReadEPCControl(QObject *parent) : QObject(parent)
{
}
void ReadEPCControl::setComm(QString ComName, long baudRate)
{
SerialPort = new QSerialPort(this);
// 设置串口号
SerialPort->setPortName(ComName);
// 打开串口
if(SerialPort->open(QIODevice::ReadOnly))
{
// 设置波特率
SerialPort->setBaudRate(baudRate);
SerialPort->setDataBits(QSerialPort::Data8);
SerialPort->setParity(QSerialPort::NoParity);
// 设置流控制
SerialPort->setFlowControl(QSerialPort::NoFlowControl);
SerialPort->setStopBits(QSerialPort::OneStop);
//qDebug()<<"打开RFID";
emit SendRFIDStatus(true);
}else {
qDebug()<<"打开RFID失败";
emit SendRFIDStatus(false);
return;
}
connect(SerialPort,&QSerialPort::readyRead,this,[=](){
QByteArray data = SerialPort->readAll();
//QString str(SerialPort.readAll());
//qDebug()<<"接收到的初始EPC:"<<data;
emit SendToBridge(data);
});
}
#ifndef READEPCCONTROL_H
#define READEPCCONTROL_H
#include <QObject>
#include <QWidget>
#include <QSerialPort>
class ReadEPCControl : public QObject
{
Q_OBJECT
public:
explicit ReadEPCControl(QObject *parent = nullptr);
signals:
void SendToBridge(QByteArray data);
void SendRFIDStatus(bool sta);
public slots:
void setComm(QString ComName,long baudRate);
private:
QString m_RepeatScan = nullptr;
QSerialPort *SerialPort;
};
#endif // READEPCCONTROL_H
#ifndef SQLITEASSISTANT_H
#define SQLITEASSISTANT_H
#include <QObject>
#include <QSql>
#include <QSqlQueryModel>
#include <QTableWidget>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
#include <QtSql/QSqlError>
#include "vehinfo.h"
class SqliteAssistant : public QObject
{
Q_OBJECT
public:
explicit SqliteAssistant(QObject *parent = nullptr);
long connectSql(); //检测连接
long Insert_GoodTypeInfo(QString data); //插入货物信息
QStringList Select_GoodTypeInfo(); //查询货物信息
long Insert_CustomerInfo(QString data); //插入客户信息
QStringList Select_CustomerInfo(); //查询客户信息
QStringList Select_EqptInfo(); //查询设备表信息
long Delete_CustomerInfo(QString data); //删除客户信息
long Delete_GoodTypeInfo(QString data); //删除货物信息
long Insert_EquipmentInfo(QString data,QString data2); //插入设备注册信息
long Delete_EquipmentInfo(QString data); //删除设备注册信息
long Insert_SystemConfigInfo(QString data,QString data2); //插入配置
long Insert_CarIDConfigInfo(QString data,QString data2); //插入车辆信息
//long Updata_SystemConfigInfo(QString data,QString data2); //更新配置信息
QString Select_SystemConfigInfo(QString data); //查询配置信息
QString Select_AdminInfo(QString data); //查询管理员信息
QString Select_AdminInfoName(); //查询管理员名字
long Insert_UserInfo(QString data,QString data2,QString data3); //插入用户信息
QStringList Select_UserInfo(); //查找用户信息
QStringList Select_UserInfo2(); //查找用户信息2
QString Select_UserInfo3(QString data); //查找用户信息3
long Delete_UserInfo(QString data); //删除用户
long Updata_AdminInfo(QString data); //查询管理员信息
long Insert_WeighingRun(QString data,QString data2,
QString data3,QString data4,
QString data5,QString data6,
QString data7,QString data8,
QString data9,QString data10); //插入称重信息
long select_ui_WeighingRun(QTableWidget *weight,int sumCount);
long Delete_WeighingRun(int data); //删除记录
int GetRowounts(QString tableName); // 获取表记录
long SelectInfo_sqliteView(QTableWidget *weight,SelectInfor &infor,int sumCount); //查询界面
// long Insert_GoodTypeInfo(QString data);
// long Insert_GoodTypeInfo(QString data);
// long Insert_GoodTypeInfo(QString data);
// long Insert_GoodTypeInfo(QString data);
// long Insert_GoodTypeInfo(QString data);
signals:
void Send_Data_Exists();
void Send_Data_Not_Exists();
void RecvFromBridge_Insert_GoodTypeInfo(QString data);
void Send_DataModel(QSqlQueryModel *data);
private:
QSqlDatabase database;
QSqlQuery *m_pSqlHandle;
};
extern SqliteAssistant *m_SqliteAssistant;
#endif // SQLITEASSISTANT_H
HEADERS += \
$$PWD/sqliteassistant.h
SOURCES += \
$$PWD/sqliteassistant.cpp
/****************************************************************************
** Meta object code from reading C++ file 'bridge.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include <memory>
#include "../../bridge.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'bridge.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.13.2. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
QT_BEGIN_MOC_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct qt_meta_stringdata_Bridge_t {
QByteArrayData data[5];
char stringdata0[55];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_Bridge_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_Bridge_t qt_meta_stringdata_Bridge = {
{
QT_MOC_LITERAL(0, 0, 6), // "Bridge"
QT_MOC_LITERAL(1, 7, 28), // "SendToReadEPCControl_Connect"
QT_MOC_LITERAL(2, 36, 0), // ""
QT_MOC_LITERAL(3, 37, 12), // "SendToWindow"
QT_MOC_LITERAL(4, 50, 4) // "data"
},
"Bridge\0SendToReadEPCControl_Connect\0"
"\0SendToWindow\0data"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_Bridge[] = {
// content:
8, // revision
0, // classname
0, 0, // classinfo
2, 14, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
2, // signalCount
// signals: name, argc, parameters, tag, flags
1, 0, 24, 2, 0x06 /* Public */,
3, 1, 25, 2, 0x06 /* Public */,
// signals: parameters
QMetaType::Void,
QMetaType::Void, QMetaType::QString, 4,
0 // eod
};
void Bridge::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
if (_c == QMetaObject::InvokeMetaMethod) {
auto *_t = static_cast<Bridge *>(_o);
Q_UNUSED(_t)
switch (_id) {
case 0: _t->SendToReadEPCControl_Connect(); break;
case 1: _t->SendToWindow((*reinterpret_cast< QString(*)>(_a[1]))); break;
default: ;
}
} else if (_c == QMetaObject::IndexOfMethod) {
int *result = reinterpret_cast<int *>(_a[0]);
{
using _t = void (Bridge::*)();
if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&Bridge::SendToReadEPCControl_Connect)) {
*result = 0;
return;
}
}
{
using _t = void (Bridge::*)(QString );
if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&Bridge::SendToWindow)) {
*result = 1;
return;
}
}
}
}
QT_INIT_METAOBJECT const QMetaObject Bridge::staticMetaObject = { {
&QObject::staticMetaObject,
qt_meta_stringdata_Bridge.data,
qt_meta_data_Bridge,
qt_static_metacall,
nullptr,
nullptr
} };
const QMetaObject *Bridge::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *Bridge::qt_metacast(const char *_clname)
{
if (!_clname) return nullptr;
if (!strcmp(_clname, qt_meta_stringdata_Bridge.stringdata0))
return static_cast<void*>(this);
return QObject::qt_metacast(_clname);
}
int Bridge::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QObject::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
if (_id < 2)
qt_static_metacall(this, _c, _id, _a);
_id -= 2;
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
if (_id < 2)
*reinterpret_cast<int*>(_a[0]) = -1;
_id -= 2;
}
return _id;
}
// SIGNAL 0
void Bridge::SendToReadEPCControl_Connect()
{
QMetaObject::activate(this, &staticMetaObject, 0, nullptr);
}
// SIGNAL 1
void Bridge::SendToWindow(QString _t1)
{
void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
QMetaObject::activate(this, &staticMetaObject, 1, _a);
}
QT_WARNING_POP
QT_END_MOC_NAMESPACE
/****************************************************************************
** Meta object code from reading C++ file 'comchange.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include <memory>
#include "../../comChange/comchange.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'comchange.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.13.2. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
QT_BEGIN_MOC_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct qt_meta_stringdata_ComChange_t {
QByteArrayData data[5];
char stringdata0[31];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_ComChange_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_ComChange_t qt_meta_stringdata_ComChange = {
{
QT_MOC_LITERAL(0, 0, 9), // "ComChange"
QT_MOC_LITERAL(1, 10, 9), // "comStatus"
QT_MOC_LITERAL(2, 20, 0), // ""
QT_MOC_LITERAL(3, 21, 4), // "name"
QT_MOC_LITERAL(4, 26, 4) // "flag"
},
"ComChange\0comStatus\0\0name\0flag"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_ComChange[] = {
// content:
8, // revision
0, // classname
0, 0, // classinfo
1, 14, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
1, // signalCount
// signals: name, argc, parameters, tag, flags
1, 2, 19, 2, 0x06 /* Public */,
// signals: parameters
QMetaType::Void, QMetaType::QString, QMetaType::Bool, 3, 4,
0 // eod
};
void ComChange::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
if (_c == QMetaObject::InvokeMetaMethod) {
auto *_t = static_cast<ComChange *>(_o);
Q_UNUSED(_t)
switch (_id) {
case 0: _t->comStatus((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< bool(*)>(_a[2]))); break;
default: ;
}
} else if (_c == QMetaObject::IndexOfMethod) {
int *result = reinterpret_cast<int *>(_a[0]);
{
using _t = void (ComChange::*)(QString , bool );
if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&ComChange::comStatus)) {
*result = 0;
return;
}
}
}
}
QT_INIT_METAOBJECT const QMetaObject ComChange::staticMetaObject = { {
&QObject::staticMetaObject,
qt_meta_stringdata_ComChange.data,
qt_meta_data_ComChange,
qt_static_metacall,
nullptr,
nullptr
} };
const QMetaObject *ComChange::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *ComChange::qt_metacast(const char *_clname)
{
if (!_clname) return nullptr;
if (!strcmp(_clname, qt_meta_stringdata_ComChange.stringdata0))
return static_cast<void*>(this);
if (!strcmp(_clname, "QAbstractNativeEventFilter"))
return static_cast< QAbstractNativeEventFilter*>(this);
return QObject::qt_metacast(_clname);
}
int ComChange::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QObject::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
if (_id < 1)
qt_static_metacall(this, _c, _id, _a);
_id -= 1;
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
if (_id < 1)
*reinterpret_cast<int*>(_a[0]) = -1;
_id -= 1;
}
return _id;
}
// SIGNAL 0
void ComChange::comStatus(QString _t1, bool _t2)
{
void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))), const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t2))) };
QMetaObject::activate(this, &staticMetaObject, 0, _a);
}
QT_WARNING_POP
QT_END_MOC_NAMESPACE
/****************************************************************************
** Meta object code from reading C++ file 'frmmessagebox.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include <memory>
#include "../../frmmessagebox.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'frmmessagebox.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.13.2. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
QT_BEGIN_MOC_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct qt_meta_stringdata_frmMessageBox_t {
QByteArrayData data[3];
char stringdata0[32];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_frmMessageBox_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_frmMessageBox_t qt_meta_stringdata_frmMessageBox = {
{
QT_MOC_LITERAL(0, 0, 13), // "frmMessageBox"
QT_MOC_LITERAL(1, 14, 16), // "on_btnOk_clicked"
QT_MOC_LITERAL(2, 31, 0) // ""
},
"frmMessageBox\0on_btnOk_clicked\0"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_frmMessageBox[] = {
// content:
8, // revision
0, // classname
0, 0, // classinfo
1, 14, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
0, // signalCount
// slots: name, argc, parameters, tag, flags
1, 0, 19, 2, 0x08 /* Private */,
// slots: parameters
QMetaType::Void,
0 // eod
};
void frmMessageBox::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
if (_c == QMetaObject::InvokeMetaMethod) {
auto *_t = static_cast<frmMessageBox *>(_o);
Q_UNUSED(_t)
switch (_id) {
case 0: _t->on_btnOk_clicked(); break;
default: ;
}
}
Q_UNUSED(_a);
}
QT_INIT_METAOBJECT const QMetaObject frmMessageBox::staticMetaObject = { {
&QDialog::staticMetaObject,
qt_meta_stringdata_frmMessageBox.data,
qt_meta_data_frmMessageBox,
qt_static_metacall,
nullptr,
nullptr
} };
const QMetaObject *frmMessageBox::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *frmMessageBox::qt_metacast(const char *_clname)
{
if (!_clname) return nullptr;
if (!strcmp(_clname, qt_meta_stringdata_frmMessageBox.stringdata0))
return static_cast<void*>(this);
return QDialog::qt_metacast(_clname);
}
int frmMessageBox::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QDialog::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
if (_id < 1)
qt_static_metacall(this, _c, _id, _a);
_id -= 1;
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
if (_id < 1)
*reinterpret_cast<int*>(_a[0]) = -1;
_id -= 1;
}
return _id;
}
QT_WARNING_POP
QT_END_MOC_NAMESPACE
/****************************************************************************
** Meta object code from reading C++ file 'logindlg.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include <memory>
#include "../../logindlg.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'logindlg.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.13.2. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
QT_BEGIN_MOC_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct qt_meta_stringdata_LoginDlg_t {
QByteArrayData data[1];
char stringdata0[9];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_LoginDlg_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_LoginDlg_t qt_meta_stringdata_LoginDlg = {
{
QT_MOC_LITERAL(0, 0, 8) // "LoginDlg"
},
"LoginDlg"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_LoginDlg[] = {
// content:
8, // revision
0, // classname
0, 0, // classinfo
0, 0, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
0, // signalCount
0 // eod
};
void LoginDlg::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
Q_UNUSED(_o);
Q_UNUSED(_id);
Q_UNUSED(_c);
Q_UNUSED(_a);
}
QT_INIT_METAOBJECT const QMetaObject LoginDlg::staticMetaObject = { {
&QDialog::staticMetaObject,
qt_meta_stringdata_LoginDlg.data,
qt_meta_data_LoginDlg,
qt_static_metacall,
nullptr,
nullptr
} };
const QMetaObject *LoginDlg::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *LoginDlg::qt_metacast(const char *_clname)
{
if (!_clname) return nullptr;
if (!strcmp(_clname, qt_meta_stringdata_LoginDlg.stringdata0))
return static_cast<void*>(this);
return QDialog::qt_metacast(_clname);
}
int LoginDlg::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QDialog::qt_metacall(_c, _id, _a);
return _id;
}
QT_WARNING_POP
QT_END_MOC_NAMESPACE
/****************************************************************************
** Meta object code from reading C++ file 'mainwindow.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include <memory>
#include "../../mainwindow.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'mainwindow.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.13.2. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
QT_BEGIN_MOC_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct qt_meta_stringdata_MainWindow_t {
QByteArrayData data[1];
char stringdata0[11];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_MainWindow_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_MainWindow_t qt_meta_stringdata_MainWindow = {
{
QT_MOC_LITERAL(0, 0, 10) // "MainWindow"
},
"MainWindow"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_MainWindow[] = {
// content:
8, // revision
0, // classname
0, 0, // classinfo
0, 0, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
0, // signalCount
0 // eod
};
void MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
Q_UNUSED(_o);
Q_UNUSED(_id);
Q_UNUSED(_c);
Q_UNUSED(_a);
}
QT_INIT_METAOBJECT const QMetaObject MainWindow::staticMetaObject = { {
&QMainWindow::staticMetaObject,
qt_meta_stringdata_MainWindow.data,
qt_meta_data_MainWindow,
qt_static_metacall,
nullptr,
nullptr
} };
const QMetaObject *MainWindow::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *MainWindow::qt_metacast(const char *_clname)
{
if (!_clname) return nullptr;
if (!strcmp(_clname, qt_meta_stringdata_MainWindow.stringdata0))
return static_cast<void*>(this);
return QMainWindow::qt_metacast(_clname);
}
int MainWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QMainWindow::qt_metacall(_c, _id, _a);
return _id;
}
QT_WARNING_POP
QT_END_MOC_NAMESPACE
/****************************************************************************
** Meta object code from reading C++ file 'porttest.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include <memory>
#include "../../comChange/porttest.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'porttest.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.13.2. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
QT_BEGIN_MOC_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct qt_meta_stringdata_PortTest_t {
QByteArrayData data[1];
char stringdata0[9];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_PortTest_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_PortTest_t qt_meta_stringdata_PortTest = {
{
QT_MOC_LITERAL(0, 0, 8) // "PortTest"
},
"PortTest"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_PortTest[] = {
// content:
8, // revision
0, // classname
0, 0, // classinfo
0, 0, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
0, // signalCount
0 // eod
};
void PortTest::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
Q_UNUSED(_o);
Q_UNUSED(_id);
Q_UNUSED(_c);
Q_UNUSED(_a);
}
QT_INIT_METAOBJECT const QMetaObject PortTest::staticMetaObject = { {
&QWidget::staticMetaObject,
qt_meta_stringdata_PortTest.data,
qt_meta_data_PortTest,
qt_static_metacall,
nullptr,
nullptr
} };
const QMetaObject *PortTest::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *PortTest::qt_metacast(const char *_clname)
{
if (!_clname) return nullptr;
if (!strcmp(_clname, qt_meta_stringdata_PortTest.stringdata0))
return static_cast<void*>(this);
return QWidget::qt_metacast(_clname);
}
int PortTest::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QWidget::qt_metacall(_c, _id, _a);
return _id;
}
QT_WARNING_POP
QT_END_MOC_NAMESPACE
/****************************************************************************
** Meta object code from reading C++ file 'readepccontrol.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include <memory>
#include "../../readEPC/readepccontrol.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'readepccontrol.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.13.2. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
QT_BEGIN_MOC_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct qt_meta_stringdata_ReadEPCControl_t {
QByteArrayData data[9];
char stringdata0[78];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_ReadEPCControl_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_ReadEPCControl_t qt_meta_stringdata_ReadEPCControl = {
{
QT_MOC_LITERAL(0, 0, 14), // "ReadEPCControl"
QT_MOC_LITERAL(1, 15, 12), // "SendToBridge"
QT_MOC_LITERAL(2, 28, 0), // ""
QT_MOC_LITERAL(3, 29, 4), // "data"
QT_MOC_LITERAL(4, 34, 14), // "SendRFIDStatus"
QT_MOC_LITERAL(5, 49, 3), // "sta"
QT_MOC_LITERAL(6, 53, 7), // "setComm"
QT_MOC_LITERAL(7, 61, 7), // "ComName"
QT_MOC_LITERAL(8, 69, 8) // "baudRate"
},
"ReadEPCControl\0SendToBridge\0\0data\0"
"SendRFIDStatus\0sta\0setComm\0ComName\0"
"baudRate"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_ReadEPCControl[] = {
// content:
8, // revision
0, // classname
0, 0, // classinfo
3, 14, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
2, // signalCount
// signals: name, argc, parameters, tag, flags
1, 1, 29, 2, 0x06 /* Public */,
4, 1, 32, 2, 0x06 /* Public */,
// slots: name, argc, parameters, tag, flags
6, 2, 35, 2, 0x0a /* Public */,
// signals: parameters
QMetaType::Void, QMetaType::QByteArray, 3,
QMetaType::Void, QMetaType::Bool, 5,
// slots: parameters
QMetaType::Void, QMetaType::QString, QMetaType::Long, 7, 8,
0 // eod
};
void ReadEPCControl::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
if (_c == QMetaObject::InvokeMetaMethod) {
auto *_t = static_cast<ReadEPCControl *>(_o);
Q_UNUSED(_t)
switch (_id) {
case 0: _t->SendToBridge((*reinterpret_cast< QByteArray(*)>(_a[1]))); break;
case 1: _t->SendRFIDStatus((*reinterpret_cast< bool(*)>(_a[1]))); break;
case 2: _t->setComm((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< long(*)>(_a[2]))); break;
default: ;
}
} else if (_c == QMetaObject::IndexOfMethod) {
int *result = reinterpret_cast<int *>(_a[0]);
{
using _t = void (ReadEPCControl::*)(QByteArray );
if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&ReadEPCControl::SendToBridge)) {
*result = 0;
return;
}
}
{
using _t = void (ReadEPCControl::*)(bool );
if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&ReadEPCControl::SendRFIDStatus)) {
*result = 1;
return;
}
}
}
}
QT_INIT_METAOBJECT const QMetaObject ReadEPCControl::staticMetaObject = { {
&QObject::staticMetaObject,
qt_meta_stringdata_ReadEPCControl.data,
qt_meta_data_ReadEPCControl,
qt_static_metacall,
nullptr,
nullptr
} };
const QMetaObject *ReadEPCControl::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *ReadEPCControl::qt_metacast(const char *_clname)
{
if (!_clname) return nullptr;
if (!strcmp(_clname, qt_meta_stringdata_ReadEPCControl.stringdata0))
return static_cast<void*>(this);
return QObject::qt_metacast(_clname);
}
int ReadEPCControl::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QObject::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
if (_id < 3)
qt_static_metacall(this, _c, _id, _a);
_id -= 3;
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
if (_id < 3)
*reinterpret_cast<int*>(_a[0]) = -1;
_id -= 3;
}
return _id;
}
// SIGNAL 0
void ReadEPCControl::SendToBridge(QByteArray _t1)
{
void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
QMetaObject::activate(this, &staticMetaObject, 0, _a);
}
// SIGNAL 1
void ReadEPCControl::SendRFIDStatus(bool _t1)
{
void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
QMetaObject::activate(this, &staticMetaObject, 1, _a);
}
QT_WARNING_POP
QT_END_MOC_NAMESPACE
/****************************************************************************
** Meta object code from reading C++ file 'sqliteassistant.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include <memory>
#include "../../sqliteassistant/sqliteassistant.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'sqliteassistant.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.13.2. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
QT_BEGIN_MOC_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct qt_meta_stringdata_SqliteAssistant_t {
QByteArrayData data[8];
char stringdata0[126];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_SqliteAssistant_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_SqliteAssistant_t qt_meta_stringdata_SqliteAssistant = {
{
QT_MOC_LITERAL(0, 0, 15), // "SqliteAssistant"
QT_MOC_LITERAL(1, 16, 16), // "Send_Data_Exists"
QT_MOC_LITERAL(2, 33, 0), // ""
QT_MOC_LITERAL(3, 34, 20), // "Send_Data_Not_Exists"
QT_MOC_LITERAL(4, 55, 34), // "RecvFromBridge_Insert_GoodTyp..."
QT_MOC_LITERAL(5, 90, 4), // "data"
QT_MOC_LITERAL(6, 95, 14), // "Send_DataModel"
QT_MOC_LITERAL(7, 110, 15) // "QSqlQueryModel*"
},
"SqliteAssistant\0Send_Data_Exists\0\0"
"Send_Data_Not_Exists\0"
"RecvFromBridge_Insert_GoodTypeInfo\0"
"data\0Send_DataModel\0QSqlQueryModel*"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_SqliteAssistant[] = {
// content:
8, // revision
0, // classname
0, 0, // classinfo
4, 14, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
4, // signalCount
// signals: name, argc, parameters, tag, flags
1, 0, 34, 2, 0x06 /* Public */,
3, 0, 35, 2, 0x06 /* Public */,
4, 1, 36, 2, 0x06 /* Public */,
6, 1, 39, 2, 0x06 /* Public */,
// signals: parameters
QMetaType::Void,
QMetaType::Void,
QMetaType::Void, QMetaType::QString, 5,
QMetaType::Void, 0x80000000 | 7, 5,
0 // eod
};
void SqliteAssistant::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
if (_c == QMetaObject::InvokeMetaMethod) {
auto *_t = static_cast<SqliteAssistant *>(_o);
Q_UNUSED(_t)
switch (_id) {
case 0: _t->Send_Data_Exists(); break;
case 1: _t->Send_Data_Not_Exists(); break;
case 2: _t->RecvFromBridge_Insert_GoodTypeInfo((*reinterpret_cast< QString(*)>(_a[1]))); break;
case 3: _t->Send_DataModel((*reinterpret_cast< QSqlQueryModel*(*)>(_a[1]))); break;
default: ;
}
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
switch (_id) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 3:
switch (*reinterpret_cast<int*>(_a[1])) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 0:
*reinterpret_cast<int*>(_a[0]) = qRegisterMetaType< QSqlQueryModel* >(); break;
}
break;
}
} else if (_c == QMetaObject::IndexOfMethod) {
int *result = reinterpret_cast<int *>(_a[0]);
{
using _t = void (SqliteAssistant::*)();
if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&SqliteAssistant::Send_Data_Exists)) {
*result = 0;
return;
}
}
{
using _t = void (SqliteAssistant::*)();
if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&SqliteAssistant::Send_Data_Not_Exists)) {
*result = 1;
return;
}
}
{
using _t = void (SqliteAssistant::*)(QString );
if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&SqliteAssistant::RecvFromBridge_Insert_GoodTypeInfo)) {
*result = 2;
return;
}
}
{
using _t = void (SqliteAssistant::*)(QSqlQueryModel * );
if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&SqliteAssistant::Send_DataModel)) {
*result = 3;
return;
}
}
}
}
QT_INIT_METAOBJECT const QMetaObject SqliteAssistant::staticMetaObject = { {
&QObject::staticMetaObject,
qt_meta_stringdata_SqliteAssistant.data,
qt_meta_data_SqliteAssistant,
qt_static_metacall,
nullptr,
nullptr
} };
const QMetaObject *SqliteAssistant::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *SqliteAssistant::qt_metacast(const char *_clname)
{
if (!_clname) return nullptr;
if (!strcmp(_clname, qt_meta_stringdata_SqliteAssistant.stringdata0))
return static_cast<void*>(this);
return QObject::qt_metacast(_clname);
}
int SqliteAssistant::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QObject::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
if (_id < 4)
qt_static_metacall(this, _c, _id, _a);
_id -= 4;
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
if (_id < 4)
qt_static_metacall(this, _c, _id, _a);
_id -= 4;
}
return _id;
}
// SIGNAL 0
void SqliteAssistant::Send_Data_Exists()
{
QMetaObject::activate(this, &staticMetaObject, 0, nullptr);
}
// SIGNAL 1
void SqliteAssistant::Send_Data_Not_Exists()
{
QMetaObject::activate(this, &staticMetaObject, 1, nullptr);
}
// SIGNAL 2
void SqliteAssistant::RecvFromBridge_Insert_GoodTypeInfo(QString _t1)
{
void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
QMetaObject::activate(this, &staticMetaObject, 2, _a);
}
// SIGNAL 3
void SqliteAssistant::Send_DataModel(QSqlQueryModel * _t1)
{
void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
QMetaObject::activate(this, &staticMetaObject, 3, _a);
}
QT_WARNING_POP
QT_END_MOC_NAMESPACE
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论