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

QT 基本对话框

包括:

1.标准文件对话框

 

 dialog.h

#ifndef DIALOG_H
#define DIALOG_H#include <QDialog>
#include <QTextCodec>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QGridLayout>
#include <QFrame>
#include "inputdlg.h"
#include "msgboxdlg.h"
class Dialog : public QDialog
{Q_OBJECTpublic:Dialog(QWidget *parent = nullptr);~Dialog();
private://标准文件对话框实例QPushButton *btnfile;QLineEdit *linefile;QGridLayout *mainLayout;//标准颜色对话框QPushButton *btncolor;QFrame *framecolor;//标准字体对话框QPushButton *btnfont;QLineEdit *linefont;//标准输入对话框QPushButton *btninput;InputDlg *Dlginput;//标准消息对话框QPushButton  *btnMsg;MsgBoxDlg   *Dlgmsg;//自定义消息对话框QPushButton  *btnCustom;QLabel   *label;private slots:void  showFile();void  showColor();void  showFont();void  showInputDlg();void  showMsgDlg();void  showCustomDlg();};
#endif // DIALOG_H

dialog.cpp

#include "dialog.h"
#include <QString>
#include <QFileDialog>
#include <QColorDialog>
#include <QFontDialog>
#include <QDebug>
#include <QMessageBox>
Dialog::Dialog(QWidget *parent): QDialog(parent)
{setWindowTitle(QStringLiteral("各种标准对话框的实例"));
//标准文件对话框实例btnfile=new QPushButton;btnfile->setText(QStringLiteral("文件标准对话框"));linefile=new QLineEdit;//标准颜色对话框btncolor=new QPushButton;btncolor->setText(QStringLiteral("颜色标准对话框"));framecolor=new QFrame;framecolor->setFrameShape(QFrame::Box);framecolor->setAutoFillBackground(true);//标准字体对话框btnfont=new QPushButton;btnfont->setText(QStringLiteral("字体标准对话框"));linefont=new QLineEdit;linefont->setText(QStringLiteral("Welcome"));//标准输入对话框btninput=new QPushButton;btninput->setText(QStringLiteral("输入标准对话框"));//标准消息对话框btnMsg=new QPushButton;btnMsg->setText(QStringLiteral("输入消息对话框"));//自定义消息对话框btnCustom=new QPushButton;btnCustom->setText(QStringLiteral("用户自定义消息对话框"));label=new QLabel;label->setFrameStyle(QFrame::Panel|QFrame::Sunken);//布局mainLayout =new  QGridLayout(this);mainLayout->addWidget(btnfile,0,0);mainLayout->addWidget(linefile,0,1);mainLayout->addWidget(btncolor,1,0);mainLayout->addWidget(framecolor,1,1);mainLayout->addWidget(btnfont,2,0);mainLayout->addWidget(linefont,2,1);mainLayout->addWidget(btninput,3,0);mainLayout->addWidget(btnMsg,3,1);mainLayout->addWidget(btnCustom,4,0);mainLayout->addWidget(label,4,1);//添加信号与槽connect(btnfile,SIGNAL(clicked()),this,SLOT(showFile()));//文件connect(btncolor,SIGNAL(clicked()),this,SLOT(showColor()));//颜色connect(btnfont,SIGNAL(clicked()),this,SLOT(showFont()));//字体connect(btninput,SIGNAL(clicked()),this,SLOT(showInputDlg()));//输入????用qDebug调试一下,你来、connect(btnMsg,SIGNAL(clicked()),this,SLOT(showMsgDlg()));//消息connect(btnCustom,SIGNAL(clicked()),this,SLOT(showCustomDlg()));//消息}Dialog::~Dialog()
{
}//标准文件对话框实例
void Dialog::showFile()
{QString s=QFileDialog::getOpenFileName(this,"open file dialog","/","c++ files(*.cpp)::c files(*.c)::Head files(*.h)");linefile->setText(s);
}//标准颜色对话框
void Dialog::showColor()
{QColor c =QColorDialog::getColor(Qt::blue);if(c.isValid()){framecolor->setPalette(QPalette(c));}
}//标准字体对话框
void Dialog::showFont()
{bool ok;QFont f=QFontDialog::getFont(&ok);if(ok){linefont->setFont(f);}}//输入标准对话框
void Dialog::showInputDlg()
{Dlginput=new InputDlg(this);//this啥意思,你这个是弹窗,不是替换原有界面,this删掉Dlginput->show();//????qDebug()<<"hhhhhh"<<endl;//下次注意-能进去,说明你这个弹窗不对劲
}void Dialog::showMsgDlg()
{Dlgmsg=new MsgBoxDlg();Dlgmsg->show();}//用户自定义消息框
void Dialog::showCustomDlg()
{label->setText(QStringLiteral("Custom Message Box"));QMessageBox customMsgBox;customMsgBox.setWindowTitle(QStringLiteral("用户自定义消息框"));QPushButton *yesBtn=customMsgBox.addButton(QStringLiteral("Yes"),QMessageBox::ActionRole);QPushButton *noBtn=customMsgBox.addButton(QStringLiteral("No"),QMessageBox::ActionRole);QPushButton *cancelBtn=customMsgBox.addButton(QMessageBox::Cancel);customMsgBox.setText(QStringLiteral("这是一个用户自定义消息框"));customMsgBox.setIconPixmap(QPixmap("Qt.png"));customMsgBox.exec();if(customMsgBox.clickedButton()==yesBtn)label->setText(QStringLiteral("Custom Message Box/Yes"));if(customMsgBox.clickedButton()==noBtn)label->setText(QStringLiteral("Custom Message Box/No"));if(customMsgBox.clickedButton()==cancelBtn)label->setText(QStringLiteral("Custom Message Box/Cancel"));return;
}

2.标准颜色对话框

 3.标准字体对话框

 4.标准输入对话框

4.1标准字符串输入对话框

 

4.2标准条目选择对话框

4.3标准int类型输入对话框

4.4标准double类型输入对话框

 inputdlg.h

#ifndef INPUTDLG_H
#define INPUTDLG_H#include <QObject>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QGridLayout>
#include <QDialog>
#include <QWidget>class InputDlg : public QDialog
{Q_OBJECT
public:explicit InputDlg(QWidget *parent = nullptr);signals:private slots:void  ChangeName();void  ChangeSex();void  ChangeAge();void  ChangeScore();private:QLabel *labname1;QLabel *labsex1;QLabel *labage1;QLabel *labscore1;QLabel *labname2;QLabel *labsex2;QLabel *labage2;QLabel *labscore2;QPushButton  *btnname;QPushButton  *btnsex;QPushButton  *btnage;QPushButton  *btnscore;QGridLayout  *mainLayout;
};#endif // INPUTDLG_H

 inputdlg.cpp

#include "inputdlg.h"
#include <QString>
#include <QWidget>
#include <QGridLayout>
#include <QInputDialog>
InputDlg::InputDlg(QWidget *parent) : QDialog(parent)
{setWindowTitle(QStringLiteral("各种标准对话框的实例"));labname1=new QLabel;labname1->setText(QStringLiteral("姓名"));labname2=new QLabel;labname2->setText(QStringLiteral("张三"));labname2->setFrameStyle(QFrame::Panel|QFrame::Sunken);btnname=new QPushButton;btnname->setText(QStringLiteral("修改姓名"));labsex1=new QLabel;labsex1->setText(QStringLiteral("性别"));labsex2=new QLabel;labsex2->setText(QStringLiteral("男"));labsex2->setFrameStyle(QFrame::Panel|QFrame::Sunken);btnsex=new QPushButton;btnsex->setText(QStringLiteral("修改性别"));labage1=new QLabel;labage1->setText(QStringLiteral("年龄"));labage2=new QLabel;labage2->setText(QStringLiteral("21"));labage2->setFrameStyle(QFrame::Panel|QFrame::Sunken);btnage=new QPushButton;btnage->setText(QStringLiteral("修改年龄"));labscore1=new QLabel;labscore1->setText(QStringLiteral("成绩"));labscore2=new QLabel;labscore2->setText(QStringLiteral("98"));labscore2->setFrameStyle(QFrame::Panel|QFrame::Sunken);btnscore=new QPushButton;btnscore->setText(QStringLiteral("修改成绩"));//布局“QGridLayout::QGridLayout(const QGridLayout &)”: 无法将参数 1 从“InputDlg *”转换为“QWidget *” ---说明QObject不能实现mainLayout =new  QGridLayout(this);mainLayout->addWidget(labname1,0,0);mainLayout->addWidget(labname2,0,1);mainLayout->addWidget(btnname,0,2);mainLayout->addWidget(labsex1,1,0);mainLayout->addWidget(labsex2,1,1);mainLayout->addWidget(btnsex,1,2);mainLayout->addWidget(labage1,2,0);mainLayout->addWidget(labage2,2,1);mainLayout->addWidget(btnage,2,2);mainLayout->addWidget(labscore1,3,0);mainLayout->addWidget(labscore2,3,1);mainLayout->addWidget(btnscore,3,2);mainLayout->setMargin(15);mainLayout->setSpacing(10);//信号与槽的连接connect(btnname,SIGNAL(clicked()),this,SLOT(ChangeName()));connect(btnsex,SIGNAL(clicked()),this,SLOT(ChangeSex()));connect(btnage,SIGNAL(clicked()),this,SLOT(ChangeAge()));connect(btnscore,SIGNAL(clicked()),this,SLOT(ChangeScore()));}void InputDlg::ChangeName()
{bool ok;QString  text=QInputDialog::getText(this,QStringLiteral("标准字符串"),QStringLiteral("请输入姓名:"),QLineEdit::Normal,labname2->text(),&ok);if(ok&&!text.isEmpty()){labname2->setText(text);}
}void InputDlg::ChangeSex()
{QStringList SexItems;SexItems<<QStringLiteral("男")<<QStringLiteral("女");bool ok;QString SexItem=QInputDialog::getItem(this,QStringLiteral("标准条目选择对话框"),QStringLiteral("请选择性别:"),SexItems,0,false,&ok);if(ok&&!SexItem.isEmpty()){labsex2->setText(SexItem);}}void InputDlg::ChangeAge()
{bool ok;int age=QInputDialog::getInt(this,QStringLiteral("标准int类型输入话框"),QStringLiteral("请选择年龄:"),labage2->text().toInt(&ok),0,100,1,&ok);if(ok){labsex2->setText(QString(QStringLiteral("%1")).arg(age));}}void InputDlg::ChangeScore()
{bool ok;double score=QInputDialog::getDouble(this,QStringLiteral("标准double类型输入话框"),QStringLiteral("请输入成绩:"),labscore2->text().toDouble(&ok),0,100,1,&ok);if(ok){labscore2->setText(QString(QStringLiteral("%1")).arg(score));}
}

5.消息对话框

5.1Question 消息框

5.2Information 消息框

 

5.3Warning 消息框

5.4Critical 消息框

5.5About 消息框

5.6About  Qt 消息框

 msgboxdlg.h

#ifndef MSGBOXDLG_H
#define MSGBOXDLG_H
#include <QWidget>
#include <QTextCodec>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QGridLayout>
class MsgBoxDlg : public QWidget
{Q_OBJECT
public:explicit MsgBoxDlg(QWidget *parent = nullptr);signals:
private:QLabel *label;QPushButton  *btnquestion;QPushButton  *btninformation;QPushButton  *btnwarning;QPushButton  *btncritical;QPushButton  *btnabout;QPushButton  *btnQtabout;QGridLayout  *mainLayout;private slots:void  showQuestionMsg();void  showInformationMsg();void  showWarningMSg();void  showCriticalMsg();void  showAboutMsg();void  showAboutQtMsg();};#endif // MSGBOXDLG_H

 msgboxdlg.cpp

#include "msgboxdlg.h"
#include <QMessageBox>
MsgBoxDlg::MsgBoxDlg(QWidget *parent) : QWidget(parent)
{setWindowTitle(QStringLiteral("标准消息对话框实例"));label=new QLabel;label->setText(QStringLiteral("请选择一种消息框"));btnquestion=new QPushButton;btnquestion->setText(QStringLiteral("QuestionMSg"));btninformation=new QPushButton;btninformation->setText(QStringLiteral("InformationMSg"));btnwarning=new QPushButton;btnwarning->setText(QStringLiteral("WarningMSg"));btncritical=new QPushButton;btncritical->setText(QStringLiteral("CriticalMSg"));btnabout=new QPushButton;btnabout->setText(QStringLiteral("AboutMSg"));btnQtabout=new QPushButton;btnQtabout->setText(QStringLiteral("AboutQtMSg"));//布局mainLayout =new  QGridLayout(this);mainLayout->addWidget(label,0,0,1,2);mainLayout->addWidget(btnquestion,1,0);mainLayout->addWidget(btninformation,1,1);mainLayout->addWidget(btnwarning,2,0);mainLayout->addWidget(btncritical,2,1);mainLayout->addWidget(btnabout,3,0);mainLayout->addWidget(btnQtabout,3,1);//信号与槽connect(btnquestion,&QPushButton::clicked,[this](){showQuestionMsg();});connect(btninformation,&QPushButton::clicked,[this](){showInformationMsg();});connect(btnwarning,&QPushButton::clicked,[this](){showWarningMSg();});connect(btncritical,&QPushButton::clicked,[this](){showCriticalMsg();});connect(btnabout,&QPushButton::clicked,[this](){showAboutMsg();});connect(btnQtabout,&QPushButton::clicked,[this](){showAboutQtMsg();});}void MsgBoxDlg::showQuestionMsg()
{label->setText(QStringLiteral("QUestion Message Box"));switch(QMessageBox::question(this,QStringLiteral("Question消息框"),QStringLiteral("您现在已经修改完成,是否要结束程序"),QMessageBox::Ok|QMessageBox::Cancel,QMessageBox::Ok)){case QMessageBox::Ok:label->setText(QStringLiteral("Question button/ok"));break;case QMessageBox::Cancel:label->setText(QStringLiteral("Question button/Cancel"));break;default:break;}return;}void MsgBoxDlg::showInformationMsg()
{label->setText(QStringLiteral("Information Message Box"));QMessageBox::information(this,QStringLiteral("Information消息框"),QStringLiteral("这是Information消息对话框,欢迎您!"));return;
}void MsgBoxDlg::showWarningMSg()
{label->setText(QStringLiteral("Warning Message Box"));switch(QMessageBox::warning(this,QStringLiteral("Warning消息框"),QStringLiteral("您修改的内容还没有保存,是否保存对文档的修改?"),QMessageBox::Save|QMessageBox::Discard|QMessageBox::Cancel,QMessageBox::Save)){case QMessageBox::Save:label->setText(QStringLiteral("Warning button/Save"));break;case QMessageBox::Cancel:label->setText(QStringLiteral("Warning button/Cancel"));break;case QMessageBox::Discard:label->setText(QStringLiteral("Warning button/Discard"));break;default:break;}return;
}void MsgBoxDlg::showCriticalMsg()
{label->setText(QStringLiteral("Critical Message Box"));QMessageBox::critical(this,QStringLiteral("Critical消息框"),QStringLiteral("这是Critical消息对话框测试!"));return;
}void MsgBoxDlg::showAboutMsg()
{label->setText(QStringLiteral("About Message Box"));QMessageBox::about(this,QStringLiteral("About消息框"),QStringLiteral("这是About消息对话框测试!"));return;
}void MsgBoxDlg::showAboutQtMsg()
{label->setText(QStringLiteral("About Qt Message Box"));QMessageBox::aboutQt(this,QStringLiteral("About Qt消息框"));return;
}

相关文章:

QT 基本对话框

包括&#xff1a; 1.标准文件对话框 dialog.h #ifndef DIALOG_H #define DIALOG_H#include <QDialog> #include <QTextCodec> #include <QLabel> #include <QLineEdit> #include <QPushButton> #include <QGridLayout> #include <QFr…...

​8th参考文献:[8]许少辉.乡村振兴战略下传统村落文化旅游设计[M]北京:中国建筑出版传媒,2022.

​&#xff18;th参考文献&#xff1a;&#xff3b;&#xff18;&#xff3d;许少辉&#xff0e;乡村振兴战略下传统村落文化旅游设计&#xff3b;&#xff2d;&#xff3d;北京&#xff1a;中国建筑出版传媒&#xff0c;&#xff12;&#xff10;&#xff12;&#xff12;&…...

Azure静态网站托管

什么是静态网站托管 Azure Blob的静态网站托管是一项功能&#xff0c;它允许开发人员在Azure Blob存储中托管和发布静态网站。通过这个功能&#xff0c;您可以轻松地将静态网页、图像、视频和其他网站资源存储在Azure Blob中&#xff0c;并直接通过提供的URL访问这些资源。 官…...

LeetCode 热题 100(五):54. 螺旋矩阵、234. 回文链表、21. 合并两个有序链表

题目一&#xff1a; 54. 螺旋矩阵https://leetcode.cn/problems/spiral-matrix/ 题目要求&#xff1a; 思路&#xff1a;一定要先找好边界。如下图 &#xff0c;上边界是1234&#xff0c;右边界是8、12&#xff0c;下边界是9、10、11&#xff0c;左边界是5&#xff0c;所以可…...

常用消息中间件介绍

RocketMQ 阿里开源&#xff0c;阿里参照kafka设计的&#xff0c;Java实现 能够保证严格的消息顺序 提供针对消息的过滤功能 提供丰富的消息拉取模式 高效的订阅者水平扩展能力 实时的消息订阅机制 亿级消息堆积能力 RabbitMQ Erlang实现&#xff0c;非常重量级&#xff0c;更适…...

装饰器读取不到被装饰函数的参数-已解决

def write_case_log(func):def wrapper(*args, **kwargs):logger.info("{}开始执行".format(func.__name__))func(*args,**kwargs)logger.info("{}执行中".format(args))logger.info("{}执行结束",format(func.__name__))return wrapper被装饰函…...

python爬虫爬取中关村在线电脑以及参数数据

一. 内容简介 python爬虫爬取中关村在线电脑以及参数数据 二. 软件环境 2.1vsCode 2.2Anaconda version: conda 22.9.0 三.主要流程 3.1 代码 解析都在代码里面 # 接口分析 # 原始接口&#xff0c;后面几个数字就是占位的&#xff0c;每个位置代表着不同的标签 # http…...

chatGPT-对话爱因斯坦

引言 阿尔伯特爱因斯坦&#xff08; 1879年 3 月 14 日 – 1955 年 4 月 18 日&#xff09;是一位出生于德国的理论物理学家&#xff0c;被广泛认为成为有史以来最伟大、最有影响力的科学家之一。他以发展相对论而闻名&#xff0c;他还对量子力学做出了重要贡献&#xff0c;因…...

嵌入式软件开发中的数据类型转换

在嵌入式软件开发时&#xff0c;数据的显示必不可少&#xff0c;那么必定会涉及到数据类型转换。将不同类型的数据在编程中进行转换&#xff0c;以便满足不同的需求。 插入一个知识点&#xff1a; 在C语言中&#xff0c;字符串是由字符组成的字符数组&#xff0c;以null终止符…...

The Go Blog 01:反射的法则(译文)

反思的法则 罗伯-派克 2011 年 9 月 6 日 引言 计算机中的反射是指程序检查自身结构的能力&#xff0c;尤其是通过类型检查自身结构的能力&#xff1b;它是元编程的一种形式。它也是造成混乱的一个重要原因。 在本文中&#xff0c;我们试图通过解释 Go 中的反射是如何工作的…...

Visual Studio Code前端开发插件推荐

引言 Visual Studio Code&#xff08;简称VS Code&#xff09;是一款轻量级且强大的开源代码编辑器&#xff0c;广受前端开发者的喜爱。其丰富的插件生态系统为前端开发提供了许多便利和增强功能的插件。本篇博客将向大家推荐一些在前端开发中常用且优秀的插件&#xff0c;并提…...

jps(JVM Process Status Tool):虚拟机进程状况工具

jps&#xff08;JVM Process Status Tool&#xff09;&#xff1a;虚拟机进程状况工具 列出正在运行的虚拟机进程&#xff0c;并显示虚拟机执行主类名称&#xff08;Main Class&#xff0c;main()函数所在的类&#xff09;以及这些进程的本地虚拟机唯一ID&#xff08;LVMID&am…...

初阶c语言:实战项目三子棋

前言 大家已经和博主学习有一段时间了&#xff0c;今天讲一个有趣的实战项目——三子棋 目录 前言 制作菜单 构建游戏选择框架 实现游戏功能 模块化编程 初始化棋盘 打印棋盘 玩家下棋 电脑下棋 时间戳&#xff1a;推荐一篇 C语言生成随机数的方法_c语言随机数_杯浅…...

计网第三章(数据链路层)(三)

一、点对点协议PPP 在第一篇里有提到数据链路层的信道分为两种&#xff1a;点对点信道和广播信道。 PPP协议就属于点对点信道上的协议。 如果对前面数据链路层的三个基本问题了解的比较透彻&#xff0c;那么这一块很多东西都很好理解。 从考试的角度来讲&#xff0c;PPP协议…...

蓝桥杯每日N题 (砝码称重)

大家好 我是寸铁 希望这篇题解对你有用&#xff0c;麻烦动动手指点个赞或关注&#xff0c;感谢您的关注 不清楚蓝桥杯考什么的点点下方&#x1f447; 考点秘籍 想背纯享模版的伙伴们点点下方&#x1f447; 蓝桥杯省一你一定不能错过的模板大全(第一期) 蓝桥杯省一你一定不…...

Opencv 视频的读取与写入

目录 前言 通过路径获取视频内容 获取视频内容 检查是否正确打开 循环播放 完整代码 从摄像头读取视频数据 获取视频设备 其他与直接读取视频一致 完整实例 录制视频 用于创建视频编解码器的四字符码&#xff08;FourCC&#xff09; cv2.VideoWriter() 将视频帧…...

LeetCode 833. Find And Replace in String【字符串,哈希表,模拟】1460

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…...

Cesium轨迹漫游及视角切换

飞行漫游&#xff0c;就是让Camera飞行。Camera有一些方法可以实现位置、视角的调整&#xff0c;比如flyTo&#xff0c;setView方法。但这些方法并不能沿着我们想要的路径调整&#xff0c;在通过插值的方法不停的调用setView&#xff0c;但这样会造成视图卡顿&#xff0c;而且计…...

构建去中心化微服务集群,满足高可用性和高并发需求的实践指南!

随着互联网技术的不断发展&#xff0c;微服务架构已经成为了开发和部署应用程序的一种主流方式。然而&#xff0c;当应用程序需要满足高可用性和高并发需求时&#xff0c;单一中心化的微服务架构可能无法满足性能和可靠性的要求。因此&#xff0c;构建一个去中心化的微服务集群…...

开集输出和开漏输出

​​​​​​ 首先指明一下以下8中GPIO输入输出模式&#xff1a; GPIO_Mode_AIN 模拟输入&#xff1b; GPIO_Mode_IN_FLOATING 浮空输入&#xff1b; GPIO_Mode_IPD 下拉输入&#xff1b; GPIO_Mode…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层&#xff08;GATT/Adv&#xff09;局限性&#xff1a; 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能&#xff0c;如 Configuration …...

华为OD机试-最短木板长度-二分法(A卷,100分)

此题是一个最大化最小值的典型例题&#xff0c; 因为搜索范围是有界的&#xff0c;上界最大木板长度补充的全部木料长度&#xff0c;下界最小木板长度&#xff1b; 即left0,right10^6; 我们可以设置一个候选值x(mid)&#xff0c;将木板的长度全部都补充到x&#xff0c;如果成功…...

Visual Studio Code 扩展

Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后&#xff0c;命令 changeCase.commands 可预览转换效果 EmmyLua…...