当前位置: 首页 > news >正文

网站注销重新备案网站后台怎么做alt标签

网站注销重新备案,网站后台怎么做alt标签,官网指的是什么网站,wordpress图片管理插件目录 1.QSerialPort类包含了很多有关串口的API 2.实现串口的打开 2.1 方法一#xff1a;通过函数实现 2.2 方法二#xff1a;在ui界面右下角实现 3. 实现定时发送 3.1类的私有成员中添加定时器QTimer timer并去构造函数中初始化它 3.2帮助文档中有QTimer类相关的说明 …目录 1.QSerialPort类包含了很多有关串口的API 2.实现串口的打开 2.1 方法一通过函数实现 2.2 方法二在ui界面右下角实现 3. 实现定时发送 3.1类的私有成员中添加定时器QTimer timer并去构造函数中初始化它 3.2帮助文档中有QTimer类相关的说明 3.3去连接该超时信号与槽函数 4.俩种方式实现时间显示 4.1通过线程实现 4.2 通过定时器实现时间显示 5. 实现发送与接收 6.实现Hex显示——实现每俩个字节加一个空格显示 7.文本框追加内容时注意事项 8.重写QComboBox组件的事件 —— 实现串口号的刷新 9.实现多文本发送 10.循环发送 第一种方法不能通过延时函数处理此方法为错误案例 第二种方法定时器 第三种方法多线程 11.Qt打包程序 1.首先切换为release然后重新构建并且运行 2.拷贝库文件 3.手动拷贝缺失库文件 4.整体进行压缩 1.QSerialPort类包含了很多有关串口的API 静态公有成员中提供了availablePorts() 函数去获取我当前电脑中存在的所有串口存放在容器中元素类型是QSerialPortInfo // 获取当前系统中存在的串口QListQSerialPortInfo serialList QSerialPortInfo::availablePorts();// 使用 qDebug 输出串口信息for (QSerialPortInfo serialinfo : serialList) {qDebug() Port Name: serialinfo.portName() //端口名称 , Description: serialinfo.description() //描述 , Manufacturer: serialinfo.manufacturer() //制造商 , Serial Number: serialinfo.serialNumber(); //序列号ui-comboBox_01-addItem(serialinfo.portName()); //向combox组件中添加端口名称}2.实现串口的打开 想要实现打开串口/关闭串口按键的点击反转需要绑定槽函数中信号是clicked(bool checked),而不是普通的clicked()信号, 并且需要使得该按键状态是可以检测的这里有俩种方法 2.1 方法一通过函数实现 ui-btn_CloseOrOpenSerial-setCheckable(true); 2.2 方法二在ui界面右下角实现 3. 实现定时发送 3.1类的私有成员中添加定时器QTimer timer并去构造函数中初始化它 3.2帮助文档中有QTimer类相关的说明 设置定时器间隔时间 void setInterval(int time);Signals中包含信号检测是否超时 void timeout(); 3.3去连接该超时信号与槽函数 在超时信号的槽函数里面进行数据的发送 4.俩种方式实现时间显示 4.1通过线程实现 curtimeupdate.h #ifndef CURTIMEUPDATE_H #define CURTIMEUPDATE_H#include QDateTime #include QThread #include QObjectclass curTimeUpdate : public QThread {Q_OBJECTpublic:explicit curTimeUpdate(QObject *parent nullptr): QThread(parent){};signals:void updateTime(const QString timeString);protected:// 每间隔1s发送一次时间信号void run() override{while(1){// 获取当前时间QDateTime dataTime QDateTime::currentDateTime();QDate date dataTime.date();int year date.year();int month date.month();int day date.day();QTime time dataTime.time();int hour time.hour();int minute time.minute();int second time.second();// 将时间拼装起来确保月份和日期、小时、分钟、秒钟都是双位数QString currentTime QString(%1-%2-%3 %4:%5:%6).arg(year).arg(month, 2, 10, QChar(0)) // 确保月是两位数.arg(day, 2, 10, QChar(0)) // 确保日是两位数.arg(hour, 2, 10, QChar(0)) // 确保小时是两位数.arg(minute, 2, 10, QChar(0)) // 确保分钟是两位数.arg(second, 2, 10, QChar(0)); // 确保秒钟是两位数//发送信号emit updateTime(currentTime);sleep(1);}}};#endif // CURTIMEUPDATE_Hwidget.cpp // 创建线程更新右下角时间timeUpdater new curTimeUpdate;connect(timeUpdater, curTimeUpdate::updateTime, this, Widget::updateTimeLabel);timeUpdater-start(); // 启动线程void Widget::updateTimeLabel(const QString timeString) {ui-label_nowTime-setText(timeString); // 更新标签显示时间 }4.2 通过定时器实现时间显示 实现逻辑定时器定时1s每当定时器超时会自动发出超时信号检测到该信号时调用槽函数实现当前时间的获取 widget.h中添加以下内容 Private:QTimer* getSysTimeTimer; private slots:void getSysTime();widget.cpp getSysTimeTimer new QTimer(this);getSysTimeTimer-setInterval(1000); //设置定时器2的间隔时间毫秒connect(getSysTimeTimer, QTimer::timeout, this, Widget::getSysTime); //定时器2超时getSysTimeTimer-start(); //启动定时器2// 定时器超时槽函数 void Widget::getSysTime() {// 获取当前时间QDateTime dataTime QDateTime::currentDateTime();QDate date dataTime.date();QTime time dataTime.time();// 提取年、月、日、时、分、秒int year date.year();int month date.month();int day date.day();int hour time.hour();int minute time.minute();int second time.second();// 将时间拼装起来确保月份和日期、小时、分钟、秒钟都是双位数QString currentTime QString(%1-%2-%3 %4:%5:%6).arg(year).arg(month, 2, 10, QChar(0)) // 确保月是两位数.arg(day, 2, 10, QChar(0)) // 确保日是两位数.arg(hour, 2, 10, QChar(0)) // 确保小时是两位数.arg(minute, 2, 10, QChar(0)) // 确保分钟是两位数.arg(second, 2, 10, QChar(0)); // 确保秒钟是两位数// 更新标签显示时间ui-label_nowTime-setText(currentTime); }5. 实现发送与接收 // 发送按键槽函数 void Widget::on_pushButton_19_clicked() {int WriteCnt 0;QString sendData ui-lineEdit_4-text();//Hex发送是否勾选此处为勾选if(ui-checkBox_15-isChecked()){QByteArray tmpArray ui-lineEdit_4-text().toLocal8Bit();//检查字节数是否是偶数if(tmpArray.size() % 2 ! 0){ui-label_5-setText(input error!);return;}//检查是否符合16进制表达for(char c:tmpArray){if(!std::isxdigit(c)){ui-label_5-setText(input error!);return;}}//检查是否添加新行if(ui-checkBox_14-isChecked()){tmpArray tmpArray.append(\\r\\n);}//转化为16进制发送QByteArray tmp QByteArray::fromHex(tmpArray);WriteCnt serialPort-write(tmp);}else{QByteArray data sendData.toLocal8Bit();//检查是否添加新行if(ui-checkBox_14-isChecked()){data data.append(\\r\\n);}WriteCnt serialPort-write(data);}if(WriteCnt -1){ui-label_5-setText(Send false!);}else{ui-label_5-setText(Send Ok!);ui-label_4-setText(Send: QString::number(WriteCntTotal));if(0 ! strcmp(sendBak.toLocal8Bit().constData(), sendData.toLocal8Bit().constData())){ui-textEdit_Record-append(sendData);sendBak sendData;}}}// 接受数据槽函数 void Widget::on_SerialData_reched() {QString revData serialPort-readAll(); // 读取所有可用的数据qDebug() 接受到的新数据为: revData;if(revData ! NULL){//a.是否勾选自动换行if(ui-checkBox_6-isChecked()) revData.append(\\r\\n);//b.更新接受长度RevCntTotal revData.size(); // 统计接受到的字节数ui-label_7-setText(Rev OK!);ui-label_3-setText(Rev: QString::number(RevCntTotal));//c.检查hex显示是否勾选if(ui-checkBox_5-isChecked()){//将新数据转化为HexQByteArray tmp revData.toUtf8();qDebug() tmp: tmp;QByteArray tmpHexString revData.toUtf8().toHex().toUpper();qDebug() 转化后的新数据为 tmpHexString;//获取旧数据QString tmpStringHex ui-textEdit_Rev-toPlainText(); //因为勾选了读出来的就是hex//拼接旧数据与新数据tmpHexString tmpStringHex.toUtf8() tmpHexString;//重新显示在控件上ui-textEdit_Rev-setText(tmpHexString);}else{//接受时间是否勾选此处为未勾选if(ui-checkBox_4-checkState() Qt::Unchecked){ui-textEdit_Rev-insertPlainText(revData);}else{getSysTime();ui-textEdit_Rev-insertPlainText(【currentTime】 revData);}}} }6.实现Hex显示——实现每俩个字节加一个空格显示 在 QString 类中mid() 函数用于提取字符串的子字符串。 QString mid(int position, int length); //position: 指定从哪个位置开始提取子字符串 //length: 指定要提取的字符数。如果这个参数省略则默认提取到字符串的末尾。// Hex显示槽函数 void Widget::on_checkBox_5_clicked(bool checked) {if (checked) {// 获取原始文本 QString \\x01\\x02\\x03QString revDisplay ui-textEdit_Rev-toPlainText();// 转换为 QByteArray \\x01\\x02\\x03QByteArray byteArray revDisplay.toUtf8();// 转换为 QByteArray 010203byteArray byteArray.toHex(); QString lastShow;// 转换为 QString 010203revDisplay QString::fromUtf8(byteArray); for(int i0; irevDisplay.size();i2){lastShow revDisplay.mid(i,2) ;}// 显示添加空格后的16进制内容ui-textEdit_Rev-setText(lastShow);} else {// 获取 Hex 文本QString hexDisplay ui-textEdit_Rev-toPlainText();// 将 Hex 转换回原始字符串//QByteArray \\x01\\x02\\x03QByteArray byteArray QByteArray::fromHex(hexDisplay.toUtf8());//QString \\x01\\x02\\x03QString normalDisplay QString::fromUtf8(byteArray);// 设置文本为正常字符串ui-textEdit_Rev-setText(normalDisplay);} }7.文本框追加内容时注意事项 我们使用的函数是insertPlainText()而不是append()。因为append()函数添加为内容后会自动换行。 8.重写QComboBox组件的事件 —— 实现串口号的刷新 当鼠标按下QComboBox组件时发送reflesh()刷新信号。在widget.cpp中连接该reflesh()信号与槽函数槽函数中实现串口号的检测刷新。 mycombobox.h #ifndef MYCOMBOBOX_H #define MYCOMBOBOX_H#include QComboBoxclass myCombobox : public QComboBox {Q_OBJECT public:myCombobox(QWidget *parent); protected:void mousePressEvent(QMouseEvent *e) override; //鼠标按下事件signals:void reflesh(); //刷新信号 };#endif // MYCOMBOBOX_Hmycombobox.cpp #include mycombobox.h#include QMouseEventmyCombobox::myCombobox(QWidget *parent):QComboBox(parent) {}void myCombobox::mousePressEvent(QMouseEvent *e) {if(e-button() Qt::LeftButton){emit reflesh();}QComboBox::mousePressEvent(e); }9.实现多文本发送 构造函数中先生成按键的名称然后查找系统中是否有该名字的按键有的话指针指向它接着给该按键绑定槽函数 for(int i 1; i 8; i){QString btnName QString(pushButton_%1).arg(i); //生成按键名字QPushButton* btn findChildQPushButton *(btnName); //查找组件中是否有该名字的按键若有将指针指向该按键if(btn){btn-setProperty(buttonId,i); //给该按键添加属性buttons.append(btn); //将该按键添加到容器中connect(btn,SIGNAL(clicked()),this,SLOT(on_command_button_clicked()));//给该按键连接信号与槽函数}QString lineEditName QString(lineEdit_%1).arg(i); //生成输入框名字QLineEdit *lineEdit findChildQLineEdit *(lineEditName); //查找组件中是否有该名字的输入框若有将指针指向该输入框lineEdits.append(lineEdit); //将该输入框添加到容器中QString checkBoxName QString(checkBox_%1).arg(i); //生成checkboBox名字QCheckBox *checkBox findChildQCheckBox *(checkBoxName); //查找组件中是否有该名字的checkboBox若有将指针指向该checkboBoxcheckBoxs.append(checkBox); //将该checkboBox添加到容器中}槽函数中先通过sender()函数获取到发送信号的对象接着获取按键的属性接着根据属性生成对应的名称 void Widget::on_command_button_clicked() {// 通过 sender() 函数获取发出信号的对象在通过 qobject_cast 方法进行类型转换QPushButton *btn qobject_castQPushButton *(sender());if (btn) {// 获取按键的属性 buttonId 的值并转换为整数int num btn-property(buttonId).toInt();// 根据 buttonId 构造与之对应的 QLineEdit 对象的名称QString lineEditName QString(lineEdit_%1).arg(num);QLineEdit *lineEdit findChildQLineEdit *(lineEditName);if (lineEdit) {if (lineEdit-text().isEmpty()) {return; // 如果文本为空直接返回不发送}ui-lineEdit_sendData-setText(lineEdit-text());}// 根据 buttonId 构造与之对应的 QCheckBox 对象的名称QString hexName QString(checkBox_%1).arg(num);QCheckBox *checkBox findChildQCheckBox *(hexName);ui-checkBox_sendHex-setChecked(checkBox ? checkBox-isChecked() : false); // 确保 checkBox 存在后再获取状态// 只有在 lineEdit 有内容的情况下发送数据on_pushButton_send_clicked();} }10.循环发送 第一种方法不能通过延时函数处理此方法为错误案例 //循环发送() void Widget::on_checkBox_cirSend_clicked(bool checked) {if(checked){for(QPushButton *btn : buttons){//当前按键发送点金信号emit btn-clicked();QThread::msleep(ui-spinBox-text().toInt());}} }第二种方法定时器 实现逻辑当勾选循环发送时候调用槽函数去设置定时器的间隔时间并且启动定时器。当定时器超时时候执行槽函数去发送信号。 void Widget::on_checkBox_cirSend_clicked(bool checked) {if(checked){timer3-setInterval(ui-spinBox-text().toInt());timer3-start(); // 启动定时器}else{timer3-stop();} }void Widget::buttons_handler() {if(btnIndex 8){QPushButton *btn buttons[btnIndex];emit btn-click();btnIndex;}else{btnIndex 0;} }第三种方法多线程 缺点没办法与ui组件关联无法通过ui组件获取定时时间。 11.Qt打包程序 11.1.首先切换为release然后重新构建并且运行 11.2.拷贝库文件 首先进入C盘 C 进入你程序的目录下 cd C:\\Users\\mi\\Desktop\\Qt Project\\build-untitled-Desktop_Qt_5_12_9_MinGW_64_bit-Release\\release 执行命令拷贝库到该目录下 D:\\Linux\\Qt\\5.12.9\\mingw73_32\\bin\\windeployqt.exe untitled.exe 11.3.手动拷贝缺失库文件 11.4.整体进行压缩即可 12.整体代码如下 tunnek/QT- (github.com)
http://www.tj-hxxt.cn/news/227146.html

相关文章:

  • 福州培训网站建设wordpress如何设置用户中心
  • 站长域名查询工具风雨同舟 网站建设
  • 网站说服力 营销型网站策划网站建设专业团队图片
  • 做演讲和做演讲视频网站导航仪企业网站源码
  • 广州网站建设哪个公司做得好些广州vi设计公司
  • 网站建设微信开发网页模版之家
  • 怎么帮别人做网站崇安区网站建设价格
  • 网站建设国内公司个人网站制作
  • 兰溪城市建设规划网站郑州制作网页的公司
  • 宾馆网站模板多用户商城网站方案
  • 安康网站建设高端网站建设设计公司
  • 武安网站设计公司网站开发代码说明书
  • 网站做缓存企业网站如何优化排名
  • 我有一个网站怎么做外贸定制网站建设官网
  • 怎么用net123做网站昆明哪个公司做网站建设最好
  • 城市焦点商城网站建设案例建立什么网站
  • 花瓣按照哪个网站做的wordpress引流插件
  • 购物网站排名榜钦州网站制作
  • 网站制作文案wordpress模板 淘宝客
  • 网站的标志可以修改吗电子商务网站规划
  • 备案主体负责人和网站负责人芜湖县住房建设局网站
  • 中国做民宿的网站大企业网站样式
  • 网站设计模板百度云无锡响应式网站建设
  • 四川做文学有关的网站优化防控措施
  • 翻译网站开发做竞价网站 要注意什么
  • 海南智能网站建设设计清远专业网站建设服务
  • 建设物业公司网站网页怎么制作超链接
  • 建站公司佛山网站建立定位企划
  • 重庆做网站公司有哪些沧州网络公司有哪些
  • 建设手机网站例seo发贴软件