做一个中文域名购物网站要多少钱优化网站排名茂名厂商
这个功能在项目中很常见,对界面里某个控件的数据进行记录,我这个是每秒记录5次,实际就是每200ms触发一次定时器,来满足需求。
.h文件
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QtSerialPort>
#include <QSerialPortInfo>
#include <QTimer>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget(); int Times,portTime,lineEditData;void processReceivedData(const QByteArray &data);private:Ui::Widget *ui;bool isSaving = false; // 控制保存状态QString fileName; // 保存文件名QFile file; // 文件对象QTimer *timer1; // 定时器StringList dataBuffer; // 缓存数据private slots:void on_VANDI_2_clicked(); //缓存电压电流数据void saveData();
//.c文件Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);connect(timer, &QTimer::timeout, this, &Widget::saveData); //槽函数
}//保存电压电流数据
void Widget::on_VANDI_2_clicked()
{if (!isSaving) {// 开始保存数据ui->VANDI_2->setText(tr("停止缓存"));dataBuffer.clear(); // 清空数据缓存// 启动定时器,每200毫秒保存一次数据,总共5次timer->start(200);isSaving = true; // 设置保存状态为真} else {// 停止定时器,准备保存数据到文件timer->stop();isSaving = false; // 设置保存状态为假// 弹出保存文件对话框fileName = QFileDialog::getSaveFileName(this, "保存电压电流数据", "", "文本文件 (*.txt);;所有文件 (*)");if (fileName.isEmpty()) {return; // 用户取消了保存文件对话框}// 打开文件进行写入file.setFileName(fileName);if (!file.open(QFile::WriteOnly | QFile::Text)) {QMessageBox::warning(this, "err", "err");return;}// 写入缓存的数据到文件QTextStream out(&file);for (const QString &data : dataBuffer) {out << data;}// 关闭文件file.close();ui->VANDI_2->setText(tr("缓存电流电压数据"));QMessageBox::information(this, "succss", "ssss");}}void Widget::saveData()
{if (isSaving) {QString timestamp = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");// 构建要保存的数据字符串QString data = timestamp+": "+"VDDA: " + QString::number(VDDA, 'f', 4) + "V"+ "|" + "VDDAI: "+QString::number(VDDAI, 'f', 4)+ "A"+" " +"VDDD: " + QString::number(VDDD, 'f', 4) + "V"+ "|" + "VDDDI: "+QString::number(VDDDI, 'f', 4)+ "A"+" " +"VDDIO: " + QString::number(VDDIO, 'f', 4)+ "V" + "|" +"VDDIOI: " +QString::number(VDDIOI, 'f', 4)+ "A"+" " +"VDDAD: " + QString::number(VDDAD, 'f', 4)+ "V" + "|" +"VDDADI: " +QString::number(VDDADI, 'f', 4)+ "A"+" " +"VDDPIX: " + QString::number(VDDPIX, 'f', 4)+ "V" + "|" +"VDDPIXI: " + QString::number(VDDPIXI, 'f', 4)+ "A"+" " +"VGRSTH: " + QString::number(VGRSTH, 'f', 4)+ "V" + "|" +"VGRSTHI: " + QString::number(VGRSTHI, 'f', 4)+ "A" +" " +"VTXH: " + QString::number(VTXH, 'f', 4) + "V"+ "|" +"VTXHI: " +QString::number(VTXHI, 'f', 4)+ "A" +" " +"VTXL: " + QString::number(VTXL, 'f', 4)+ "V" + "|" +"VTXL_AD: " +QString::number(VTXL_AD, 'f', 4)+ "A"+" " +"VGRSTL: " + QString::number(VGRSTL, 'f', 4)+ "V" + "|" +"VGESTL_AD: " + QString::number(VGESTL_AD, 'f', 4)+ "A"+" " +"VDD_POS: " + QString::number(VDD_POS, 'f', 4)+ "V" + "|" +"VDD_POSI: " + QString::number(VDD_POSI, 'f', 4)+ "A"+" " +"GND_ENG: " + QString::number(GND_ENG, 'f', 4)+ "V" + "|" +"VDD_POS_AD: " + QString::number(VDD_POS_AD, 'f', 4)+ "A"+" " +"\n";// 将数据添加到缓存中dataBuffer.append(data);}
}