#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include "SerialConfig.h" #include "serialportmanager.h" #include #include // 引入所有QtCharts绘制的头文件,也可以单独引入某一个头文件 #include #include #include #include #include QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); void keyPressEvent(QKeyEvent *event) { if (event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter) { QString barcode = barStr; barStr.clear(); dispscan(barcode); qDebug() << "Barcode scanned:" << barcode; } else { barStr += event->text(); qDebug() << " scanned:" << barStr; } } void mousePressEvent(QMouseEvent *event) { // 关闭扫码提示标签 if (scanTipLabel != nullptr) { scanTipLabel->close(); scanTipLabel->deleteLater(); scanTipLabel = nullptr; } // 点击空白区域时,让主窗口获得焦点,确保扫码输入正常工作 this->setFocus(); QMainWindow::mousePressEvent(event); } void resizeEvent(QResizeEvent *event) override; void dispscan(const QString barcode); private slots: void on_link_button_clicked(); void onLinkButtonClicked(); void on_manual_button_clicked(); void on_auto_button_clicked(); void on_excel_b_clicked(); void on_user_data_button_clicked_func(); void on_res_max_button_clicked_func(); void on_auto_value_button_clicked_func(); // void on_set_tx_button_clicked(); void on_nextPageButton_clicked(); void on_prevPageButton_clicked(); void auto_query(); void updateCharts(); void on_name_button_clicked_func(); void onExportSucceeded(); void onExportFailed(const QString &error); void get_device_bj_info(); void on_pushButton_2_clicked(); void on_xc_button_clicked_func(); void playQualified(); void playUnqualified(); void playConnState_ok(); void playConnState_no(); void play_get_err(); void play_no_conn_res(); void handleDataRead(const QByteArray &data); void on_delete_1_button_clicked_func(); void on_delete_2_button_clicked_func(); void on_pwd_button_clicked_func(); void onShowPasswordDialog(); void onPasswordAccepted(); private: Ui::MainWindow *ui; SerialPortManager *serialPortManager; SerialConfig *serialConfigDialog; QSerialPort *serialPort; QTimer *timer; QTimer *timer2; QLabel *scanTipLabel = nullptr; // 扫码提示标签 QSize initialSize; // 初始窗口大小 QSize designSize; // UI设计基准尺寸 QPieSeries *pieSeries; QMediaPlayer *player; QString barStr; QPushButton *senderButton; QBarSet *set20; QBarSet *set21; QBarSet *set22; QValueAxis *axisX2; void disp_IIOT(); void disp_canshu(); int null_cnt = 0; int serial_error = 0; bool auto_mode = false; // 自动模式开关 QString auto_mode_flag; int all_count; // 总检验次数 int auto_cnt; // 自动检验次数 int manual_cnt; // 手动检验次数 int qualified_cnt; // 合格次数 int up_cnt; // 超过范围次数 int down_cnt; // 小于范围次数 double res_value; // 电阻标准值 double res_sd; // 电阻误差范围 double max_res; // 最大电阻范围 double min_res; // 最小电阻范围 double xc_sd; // 线材阻值 int auto_time; // 自动获取时间 QString name; // 检验员 QString chexing; // 车型 QString sm_num; // 护面扫码编号 QString hot_num; // 加热垫扫码编号 QString pwd; // 密码 QString daily_date; bool daily_one = true; int daily_cnt = 0; int daily_cnt_manual = 0; int daily_qualified_cnt = 0; int daily_cnt_over = 0; int daily_cnt_down = 0; double daily_cnt_max = 0; double daily_cnt_min = 0; double daily_qualified_l = 0; QString detect; int currentPage = 0; int rowsPerPage = 21; int totalRows = 0; int old_totalRows = 0; bool uppage = true; int uppage_cnt = 0; void updateTableWidget(const QVector &data); void get_one_data(); }; #endif // MAINWINDOW_H