#include "mainwindow.h" #include "ui_mainwindow.h" #include "view/beltspeedlinewidget.h" #include "view/coaldistributbarchartwidget.h" #include "view/coalstaticwidget.h" #include #include MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); this->setWindowFlag(Qt::FramelessWindowHint); this->setWindowFlags(windowFlags() | Qt::WindowMaximizeButtonHint | Qt::WindowMinimizeButtonHint); ui->widget_head->installEventFilter(this); m_systemSetting = new QSettings("system.ini", QSettings::IniFormat); createSystemINI(); this->setWindowTitle(m_systemSetting->value("system/name").toString()); calendarLoopPlay(); setSystemTitle(); setBeltWarnInfoTextEditStyle(); addcoalDistributChart(); addbeltSpeedChat(); addCoalStatisticsChart(); addCoalBeltVideo(); } MainWindow::~MainWindow() { delete ui; } bool MainWindow::eventFilter(QObject* watched, QEvent* event) { // 处理鼠标按下、释放和移动事件 if (watched == ui->widget_head) { QMouseEvent* mouseEvent = static_cast(event); if (mouseEvent->type() == QEvent::MouseButtonPress) { if (mouseEvent->button() == Qt::LeftButton) { m_mousePressed = true; // 启动拖拽 m_mousePoint = mouseEvent->globalPos() - this->pos(); this->setWindowFlags(windowFlags() | Qt::WindowMaximizeButtonHint | Qt::WindowMinimizeButtonHint | Qt::Window | Qt::WindowStaysOnTopHint); this->show(); // 确保窗口显示 return true; } } else if (mouseEvent->type() == QEvent::MouseButtonRelease) { m_mousePressed = false; return true; } else if (mouseEvent->type() == QEvent::MouseMove) { if (m_mousePressed && (mouseEvent->buttons() & Qt::LeftButton)) { this->move(mouseEvent->globalPos() - m_mousePoint); // 每次移动时设置为最上方 this->setWindowFlags(windowFlags() | Qt::WindowMaximizeButtonHint | Qt::WindowMinimizeButtonHint | Qt::Window | Qt::WindowStaysOnTopHint); this->show(); return true; } } } } void MainWindow::addBeltWarnInfoToTextEdit(const QString& consoleInfo) { qDebug() << consoleInfo; m_textEditConsoleInfo.append(consoleInfo); QDateTime startDateTime = QDateTime::currentDateTime(); QString formattedTime = startDateTime.toString("yyyy-MM-dd hh:mm:ss"); if (m_textEditConsoleInfo.isEmpty()) return; QString lastConsoleInfo = m_textEditConsoleInfo.last(); // qint64 timeDifferenceInMilliseconds = // m_previousConsleInfoDateTime.secsTo(startDateTime); // if ((lastConsoleInfo == consoleInfo) && timeDifferenceInMilliseconds < // 2) // return; QString consoleInfoResult = QStringLiteral("[%1]%2").arg(formattedTime).arg(consoleInfo); ui->textEdit_beltWarnInfo->append(consoleInfoResult); m_previousConsleInfoDateTime = QDateTime::currentDateTime(); } void MainWindow::on_pushButton_close_clicked() { this->close(); } void MainWindow::on_pushButton_max_clicked() { if (isFullScreen()) { this->showMaximized(); } else { this->showFullScreen(); } } void MainWindow::on_pushButton_min_clicked() { this->showMinimized(); } void MainWindow::calendarLoopPlay() { ui->label_calendar->clear(); QTimer* timer_calendar = new QTimer(this); connect(timer_calendar, &QTimer::timeout, this, [this]() { QDateTime time = QDateTime::currentDateTime(); QString str = time.toString("yyyy-MM-dd hh:mm:ss dddd"); ui->label_calendar->setText(str); }); timer_calendar->start(1000); //每一秒溢出一次进入槽函数 } void MainWindow::createSystemINI() { // 写入数据到INI文件 // 判断并设置 "system/name" if (!m_systemSetting->contains("system/name")) { m_systemSetting->setValue("system/name", "煤流监测平台"); } // 判断并设置 "coalStaticInterface/url" if (!m_systemSetting->contains("coalStaticInterface/url")) { m_systemSetting->setValue("coalStaticInterface/url", 30); } // 判断并设置 "addr/ip" if (!m_systemSetting->contains("addr/ip")) { m_systemSetting->setValue("addr/ip", "127.0.0.1"); } // 判断并设置 "addr/port" if (!m_systemSetting->contains("addr/port")) { m_systemSetting->setValue("addr/port", 3000); } // 判断并设置 "camera/rtsp" if (!m_systemSetting->contains("camera/rtsp")) { m_systemSetting->setValue("camera/rtsp", 3000); } // 判断并设置"system/different" if (!m_systemSetting->contains("system/different")) { m_systemSetting->setValue("system/different", 1); } } void MainWindow::setSystemTitle() { QString titleName = m_systemSetting->value("system/name").toString(); if (!titleName.isEmpty()) { ui->label_title->clear(); ui->label_title->setText(titleName); } } void MainWindow::setBeltWarnInfoTextEditStyle() { ui->textEdit_beltWarnInfo->document()->setMaximumBlockCount(100); ui->textEdit_beltWarnInfo->setReadOnly(true); ui->textEdit_beltWarnInfo->setTextInteractionFlags(Qt::NoTextInteraction); } void MainWindow::addcoalDistributChart() { // addBeltWarnInfoToTextEdit("添加煤流分布窗口成功!"); ui->textEdit_beltWarnInfo->append("添加煤流分布窗口成功!"); CoalDistributBarChartWidget* coalDistributBarChartWidget = new CoalDistributBarChartWidget(this); // 检查布局是否已设置 if (!ui->widget_coalDistributChart->layout()) { ui->widget_coalDistributChart->setLayout(new QVBoxLayout); } coalDistributBarChartWidget->setContentsMargins(0, 0, 0, 0); ui->widget_coalDistributChart->layout()->addWidget( coalDistributBarChartWidget); } void MainWindow::addbeltSpeedChat() { // ui->textEdit_beltWarnInfo->append("添加皮带机速度曲线窗口成功!"); // BeltSpeedLineWidget *beltSpeedLineWidget = new BeltSpeedLineWidget(this); // // 检查布局是否已设置 // if (!ui->widget_beltSpeedChart->layout()) { // ui->widget_beltSpeedChart->setLayout(new QVBoxLayout); // } // beltSpeedLineWidget->setContentsMargins(0, 0, 0, 0); // ui->widget_beltSpeedChart->layout()->addWidget(beltSpeedLineWidget); } void MainWindow::addCoalStatisticsChart() { // ui->textEdit_beltWarnInfo->append("添加煤量统计窗口成功!"); // CoalStatisticsChartWidget* coalStatisticsChartWidget = new CoalStatisticsChartWidget(this); // // 检查布局是否已设置 // if (!ui->widget_coalStatisticsChart->layout()) { // ui->widget_coalStatisticsChart->setLayout(new QVBoxLayout); // } // coalStatisticsChartWidget->setContentsMargins(0, 0, 0, 0); // ui->widget_coalStatisticsChart->layout()->addWidget(coalStatisticsChartWidget); // connect(coalStatisticsChartWidget, &CoalStatisticsChartWidget::querySuccessInfo, this, &MainWindow::addBeltWarnInfoToTextEdit); CoalStaticWidget* coalStaticWidget = new CoalStaticWidget(this); // 检查布局是否已设置 if (!ui->widget_coalStatis->layout()) { ui->widget_coalStatis->setLayout(new QVBoxLayout); } coalStaticWidget->setContentsMargins(0, 0, 0, 0); ui->widget_coalStatis->layout()->addWidget(coalStaticWidget); connect(coalStaticWidget, &CoalStaticWidget::querySuccessInfo, this, &MainWindow::addBeltWarnInfoToTextEdit); } void MainWindow::addCoalBeltVideo() { // QString url = "https://stream7.iqilu.com/10339/upload_transcode/202002/18/20200218114723HDu3hhxqIT.mp4"; // QString url = "rtsp://admin:1234qwer@192.168.80.82:554/Streaming/Channels/101"; QString url = m_systemSetting->value("camera/rtsp").toString(); ui->widget_beltVideo->setUrl(url); ui->widget_beltVideo->open(); }