219 lines
7.1 KiB
C++
219 lines
7.1 KiB
C++
#include "mainwindow.h"
|
|
#include "ui_mainwindow.h"
|
|
#include "view/beltspeedlinewidget.h"
|
|
#include "view/coaldistributbarchartwidget.h"
|
|
#include "view/coalstatisticschartwidget.h"
|
|
|
|
#include <QDateTime>
|
|
#include <QTimer>
|
|
|
|
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<QMouseEvent *>(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);
|
|
}
|
|
}
|
|
|
|
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_beltSpeedChart->layout()) {
|
|
ui->widget_beltSpeedChart->setLayout(new QVBoxLayout);
|
|
}
|
|
coalStatisticsChartWidget->setContentsMargins(0, 0, 0, 0);
|
|
ui->widget_coalStatisticsChart->layout()->addWidget(
|
|
coalStatisticsChartWidget);
|
|
|
|
connect(coalStatisticsChartWidget,
|
|
&CoalStatisticsChartWidget::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();
|
|
}
|