#include "mainwindow.h" #include "ui_mainwindow.h" #include #include #include #include #include #include "commonhelper.h" #include "frameless_helper.h" #include #pragma comment(lib, "winmm") #define MaxSize_IRSensorTool (4096*2048) MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); this->setWindowTitle(tr(" ") ); // OpenGLView //this->setAttribute(Qt::WA_Mapped); // m_bMousePressed = false; // m_bThreadRunning_CaptureDeviceData = false; m_ptrThread_CaptureDeviceData = nullptr; // 初始化界面 InitStyle(); // 加载信号槽函数连接 Connect(); m_pGdSQLite3 = new GdSQLite3(); m_pGdSQLite3->OpenDB("MyTestDB.db"); m_nInsertIndex = 11; } MainWindow::~MainWindow() { // Disconnect(); if(nullptr != m_pGdSQLite3) { m_pGdSQLite3->CloseDB(); delete m_pGdSQLite3; m_pGdSQLite3 = nullptr; } delete ui; } void MainWindow::Connect() { // 通用 connect(ui->m_pushButton_MinMenu, &QPushButton::clicked, this, &MainWindow::OnButtonClicked); connect(ui->m_pushButton_CloseMenu, &QPushButton::clicked, this, &MainWindow::OnButtonClicked); // 数据库测试 connect(ui->m_pushButton_DB_Init, &QPushButton::clicked, this, &MainWindow::OnButtonClicked); connect(ui->m_pushButton_DB_Insert, &QPushButton::clicked, this, &MainWindow::OnButtonClicked); connect(ui->m_pushButton_DB_Delete, &QPushButton::clicked, this, &MainWindow::OnButtonClicked); connect(ui->m_pushButton_DB_Update, &QPushButton::clicked, this, &MainWindow::OnButtonClicked); connect(ui->m_pushButton_DB_Query, &QPushButton::clicked, this, &MainWindow::OnButtonClicked); connect(ui->m_pushButton_DB_Query_RecordSet, &QPushButton::clicked, this, &MainWindow::OnButtonClicked); // connect(&m_varTimer, &QTimer::timeout, this, &MainWindow::OnTimer); m_varTimer.setTimerType(Qt::PreciseTimer); m_varTimer.start(40); } void MainWindow::Disconnect() { // 通用 disconnect(ui->m_pushButton_MinMenu, &QPushButton::clicked, this, &MainWindow::OnButtonClicked); disconnect(ui->m_pushButton_CloseMenu, &QPushButton::clicked, this, &MainWindow::OnButtonClicked); // 数据库测试 disconnect(ui->m_pushButton_DB_Init, &QPushButton::clicked, this, &MainWindow::OnButtonClicked); disconnect(ui->m_pushButton_DB_Insert, &QPushButton::clicked, this, &MainWindow::OnButtonClicked); disconnect(ui->m_pushButton_DB_Delete, &QPushButton::clicked, this, &MainWindow::OnButtonClicked); disconnect(ui->m_pushButton_DB_Update, &QPushButton::clicked, this, &MainWindow::OnButtonClicked); disconnect(ui->m_pushButton_DB_Query, &QPushButton::clicked, this, &MainWindow::OnButtonClicked);\ disconnect(ui->m_pushButton_DB_Query_RecordSet, &QPushButton::clicked, this, &MainWindow::OnButtonClicked); // m_varTimer.stop(); disconnect(&m_varTimer, &QTimer::timeout, this, &MainWindow::OnTimer); } void MainWindow::OnButtonClicked() { // 最小化 if(sender() == ui->m_pushButton_MinMenu) { this->showMinimized(); } // 退出程序 if(sender() == ui->m_pushButton_CloseMenu) { qApp->exit(); } if(sender() == ui->m_pushButton_DB_Init) { // QString strSQL = ""; // 删除表 strSQL = "drop table if exists TestTable;"; m_pGdSQLite3->Execute(strSQL); // 创建表 strSQL = "create table TestTable(ID integer, msg text);"; m_pGdSQLite3->Execute(strSQL); // 初始化数据 for(int i = 0; i < 10; i++) { strSQL = QString("insert into TestTable(ID, msg) values (%1,\"msg %2\");") .arg(i+1) .arg(i+1); m_pGdSQLite3->Execute(strSQL); } m_nInsertIndex = 11; int jj = 0; } if(sender() == ui->m_pushButton_DB_Insert) { // QString strSQL = QString("insert into TestTable(ID, msg) values (%1,\"msg%2\");") .arg(m_nInsertIndex) .arg(m_nInsertIndex); m_pGdSQLite3->Execute(strSQL); m_nInsertIndex++; } if(sender() == ui->m_pushButton_DB_Delete) { // uint32_t nID = ui->m_lineEdit_ID_Delete->text().toUInt(); QString strSQL = QString("delete from TestTable where ID=%1;") .arg(nID); m_pGdSQLite3->Execute(strSQL); } if(sender() == ui->m_pushButton_DB_Update) { // uint32_t nID = ui->m_lineEdit_ID_Update->text().toUInt(); QString strMsg = ui->m_lineEdit_Msg_Update->text(); QString strSQL = QString("update TestTable set msg=\"%1\" where ID=%2;") .arg(strMsg) .arg(nID); m_pGdSQLite3->Execute(strSQL); } if(sender() == ui->m_pushButton_DB_Query) { // QString strResult = ""; m_pGdSQLite3->QueryAllTableInfo(strResult, "TestTable"); ui->m_textEdit_Result->setText(strResult); } if(sender() == ui->m_pushButton_DB_Query_RecordSet) { GdSQLite3RecordSet rs(m_pGdSQLite3); // QString strSQL = "select * from TestTable;"; QString strResult = ""; rs.Open(strSQL); while(rs.Next() ) { QVariant varVal; strResult += "ID: "; // ID rs.GetValue(varVal, 0, GdSQLite3RecordSet::eDT_Int); strResult += QString::number(varVal.toUInt() ); strResult += " $$ msg: "; // msg rs.GetValue(varVal, 1, GdSQLite3RecordSet::eDT_Blob); strResult += varVal.toString(); strResult += "\r\n\r\n"; int jj = 0; } rs.Close(); ui->m_textEdit_Result->setText(strResult); } } void MainWindow::InitStyle() { m_bMousePressed = false; //安装事件监听器,让标题栏识别鼠标双击 ui->lblTitle->installEventFilter(this); /* this->setWindowFlags(/*Qt::FramelessWindowHint |* Qt::WindowTitleHint | Qt::WindowSystemMenuHint); */ FramelessHelper *pHelper = new FramelessHelper(this); pHelper->activateOn(this); //激活当前窗体 pHelper->setTitleHeight(ui->wgtTitleBar->height()); //设置窗体的标题栏高度 CommonHelper::SetStyle("blue");//"blue"//"dark" } bool MainWindow::eventFilter(QObject *obj, QEvent *event) { //if (ui->lblTitle == obj) { if (event->type() == QEvent::MouseButtonPress) { QMouseEvent *mouseEvent = dynamic_cast(event); if (mouseEvent->button() == Qt::LeftButton) { m_bMousePressed = true; m_ptMouse = mouseEvent->globalPos() - pos(); mouseEvent->accept(); } return true; } else if (event->type() == QEvent::MouseMove) { QMouseEvent *mouseEvent = dynamic_cast(event); if (m_bMousePressed && this->windowState() != Qt::WindowMaximized) { if (mouseEvent->globalY() <= qApp->desktop()->availableGeometry().bottom()) { move(mouseEvent->globalPos() - m_ptMouse); mouseEvent->accept(); } else { qApp->desktop()->cursor().setPos( qApp->desktop()->cursor().pos().x(), qApp->desktop()->availableGeometry().bottom() ); } } return true; } else if (event->type() == QEvent::MouseButtonRelease) { QMouseEvent *mouseEvent = dynamic_cast(event); if (mouseEvent->button() == Qt::LeftButton) { m_bMousePressed = false; mouseEvent->accept(); } return true; } } return QMainWindow::eventFilter(obj, event); } void MainWindow::OnTimer() { } void MainWindow::ThreadEntry(ThreadRunFunPtr pRunFun, void* pOwner) { MainWindow* pThis = reinterpret_cast(pOwner); if (NULL == pThis) { return; } (pThis->*pRunFun)(); } void MainWindow::ThreadFun_CaptureDeviceData() { timeBeginPeriod(1); timeEndPeriod(1); } bool MainWindow::StartThread() { StopThread(); // m_bThreadRunning_CaptureDeviceData = true; m_ptrThread_CaptureDeviceData = new std::thread(std::bind(&MainWindow::ThreadEntry, &MainWindow::ThreadFun_CaptureDeviceData, (void*)this)); return true; } void MainWindow::StopThread() { // if(m_bThreadRunning_CaptureDeviceData) { m_bThreadRunning_CaptureDeviceData = false; if(nullptr != m_ptrThread_CaptureDeviceData) { m_ptrThread_CaptureDeviceData->join(); delete m_ptrThread_CaptureDeviceData; m_ptrThread_CaptureDeviceData = nullptr; } } }