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

QT(二):Qt相关控件的使用和设置,Qt对话框的使用,画图事件的创建和设置,线程和锁的创建利用,网络编程,TCP和UDP客户端及服务器的创建,SQLITE数据库,QTableWidget控件的使用

一、相关控件及操作配置1、QPushButton QtoolButton按钮setText(QString) ---- 设置按钮上的内容setFixedSize(int w, int h) --- 设置固定大小setFixedHeight(int) --- 设置固定高度setFixedwidth(int) --- 设置固定宽度setMaximumSize(int w, int h); ---- 设置最大宽高setMinimumSize(int w, int h); ---- 设置最小宽高setFont(QFont) ---- 设置字体setIcon(QIcon) --- 设置图标setIconSize(QSize) --- 设置图标大小setFlat(bool) --- 设置是否透明setEnabled(bool) --- 设置是否可用toolButton-setToolButtonStyle(Qt::ToolButtonTextBesideIcon)signals:clicked() --- 点击信号pressed() --- 按下信号released() --- 松开信号2、QLabel 标签setText(QString); --- 设置内容setPixmap(QPixmap); --- 显示图片setAlignment(); --- 设置对齐方式setScaledContents(bool) --- 设置自适应添加资源右键headers添加新文件 -- Qt Resource fileQt 资源文件 --- location(资源存放位置)--- 添加前缀 --添加文件打开资源右键资源选择open in editor3、布局QHBoxLayout ---- 水平布局addWidget(QWidget *) --- 添加控件addLayout(QLayout *) --- 添加布局QVBoxLayout ---- 垂直布局addWidget(QWidget *) --- 添加控件addLayout(QLayout *) --- 添加布局QGridLayout ---- 网格布局addWidget(QWidget *, 第几行 第几列 占几行 占几列) //行/列是0 base的4 、QLineEdit行编辑框QString text() ---- 获取行编辑器的内容setText(QString) --- 设置内容setReadOnly(bool) --- 设置是否只读setAlignment(Qt::AlignRight) --- 设置对齐方式setEchoMode(); --- 设置显示模式5 、QTextEdit文本编辑器QString toHtml(); --- 获取带格式的文本QString toPlainText(); --- 获取纯文本setText(QString); --- 设置内容6、 QRadioButton单选按钮signals:clicked()7 、QGroupBox分组框setTitle -- 设置标题setLayout --- 添加布局8、QCheckBox复选框signals:clicked()bool isChecked() --- 获取是否被勾选9、QComBoBox下拉列表addItem(QString) --- 添加条目addItems(QStringList) --- 添加一堆条目signals:currentIndexChanged(int) --- 当index改变时触发currentIndexChanged(QString)10、 QStackWidget堆叠窗口addWidget() --- 添加子页面setCurrentIndex(int) --- 翻到该页面int currentIndex() --- 获取当前页面count() --- 获取总页面数11、QSpinBox12、QDoubleSpinBox数字设定框setValue(double) --- 设置值double value() --- 获取值setRange(double min, double max) --- 设置范围setSingleStep(double) --- 设置步长setPrefix(QString) --- 设置前缀setSuffix(QString) --- 设置后缀setDecimal(int) --- 设置精度小数位数signals:valueChanged(int); valueChanged(QString) ; //QSpinBoxvalueChanged(double); valueChanged(QString) ; //QDoubleSpinBox13、 QSlider 滑动条setValue(int) //设置特定的值int value() //获取当前值setRange(int, int); //设置范围setOrientation(Qt::Horizontal) --- 水平放置 Vertical --- 垂直的signals:valueChanged(int) ;14、 QScrollBar滚动条setValue(50);setRange(0, 100);setOrientation(Qt::Horizontal);signals:valueChanged(int) ;15、 QProgressBar进度条setValue(int)setRange(int, int);16、 QTimer: 定时器start(int msec); --- 启动定时器设置超时时间单位:毫秒stop(); --- 停止定时器signals:timeout(); --- 超时信号二、对话框StandardDialog:1、模态对话框:QDialog dialog(this);dialog.resize(300, 200);//当使用QDialog::exec()成员函数的时候,弹出的对话框是模态对话框,会阻止用户的输入,直到用户关闭它dialog.exec();2、非模态对话框:QDialog *dialog new QDialog(this);//设置属性,当用户关闭该对话框的时候在删除整个对象dialog-setAttribute(Qt::WA_DeleteOnClose);dialog-resize(300, 200);//当使用QDialog::show()成员函数的时候,弹出的对话框是非模态对话框,不会阻止用户的输入dialog-show();3、QFileDialog: 文件对话框静态函数getOpenFileName();getOpenFileNames();getExistingDirectory();QString fileName QFileDialog::getOpenFileName(this, 打开文件, ., 文本文件 (*.h *.cpp *.txt));QStringList fileNames QFileDialog::getOpenFileNames(this, 打开文件, ., 文本文件 (*.h *.cpp *.txt));4、QMessageBox: 消息框静态函数question();warning();information();about();aboutQt();QMessageBox msgBox;msgBox.setText(请确保您的数据准确.);msgBox.setInformativeText(确定要提交您的个人信息吗?);msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No);msgBox.setDefaultButton(QMessageBox::Yes);int ret msgBox.exec();switch (ret){case QMessageBox::Yes:this-close();break;default:break;}5、 QInputDialog: 输入对话框QInputDialog::getDoubleQInputDialog::getText();QInputDialog::getInt();double num QInputDialog::getDouble(this, 获得一个浮点数, 请输入一个浮点数:, 100, 0, 100, 5)6、QErrorMessage: 错误对话框QErrorMessage *errMsg QErrorMessage::qtHandler();//errMsg-setAttribute(Qt::WA_DeleteOnClose);errMsg-showMessage(this is a system error);errMsg-showMessage(this is a array overflow error);errMsg-showMessage(this is a system error);errMsg-showMessage(this is a array overflow error);7、QFontDialog: 字体对话框QFontDialog::getFont();static QFont originaIFont ui-textEdit-font();//获取初始字体bool isOk;QFont font QFontDialog::getFont(isOk, this);if (isOk){te-textEdit-setFont(font);}else{te-textEdit-setFont(originalFont);}8、QColorDialog: 颜色对话框QColorDialog::getColor();QColor color QColorDialog::getColor();三、QMainWindow设置QMenuBar菜单栏QMenu: 菜单QAction: 动作QToolBar: 工具栏QStatusBar: 状态栏setWindowTitle(主窗口);//: 前缀 文件名setWindowIcon(QIcon(:/mw_images/10.png));resize(640, 480);//一个主窗口只能有一个菜单栏QMenuBar *menuBar this-menuBar();//可以增加多个菜单//QMenu *fileMenu menuBar-addMenu(QIcon(:/mw_images/file.png), 文件);QMenu *fileMenu menuBar-addMenu(文件);QMenu *editMenu menuBar-addMenu(编辑);QMenu *setMenu menuBar-addMenu(设置);//一个菜单可以增加多个菜单项openAct fileMenu-addAction(QIcon(:/mw_images/open.png), 打开文件);fileMenu-addSeparator();closeAct fileMenu-addAction(QIcon(:/mw_images/close.png), 关闭文件);//增加工具栏,一个主窗口可以有多个工具栏QToolBar *fileTool this-addToolBar(文件);fileTool-addAction(openAct);fileTool-addAction(closeAct);fileTool-setAllowedAreas(Qt::TopToolBarArea | Qt::BottomToolBarArea);fileTool-setFloatable(true);fileTool-setMovable(true);//每个工具栏可以有多个工具项QToolBar *editTool this-addToolBar(编辑);editTool-addAction(copyAct);editTool-addAction(pasteAct);QToolBar *setTool this-addToolBar(设置);setTool-addAction(fontAct);setTool-addAction(colorAct);//一个主窗口可以有多个滑动窗口QDockWidget *dw1 new QDockWidget(滑动窗口);dw1-setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);//设置dw1成为一个独立的窗口dw1-setFloating(false);//增加一个滑动窗口addDockWidget(Qt::LeftDockWidgetArea, dw1);//一个主窗口只能有一个中央部件te new QTextEdit;te-setFixedSize(640, 480);setCentralWidget(te);//一个主窗口只能有一个状态栏QStatusBar *statBar this-statusBar();lb_status new QLabel;lb_status-setText(xxx file is editing... );prog_bar new QProgressBar;prog_bar-setValue(67);statBar-addWidget(lb_status);statBar-addWidget(prog_bar);四、事件//事件处理的统一的入口bool event(QEvent *event);//特定事件处理器void mousePressEvent(QMouseEvent *e); --- 鼠标按下事件e-button(); --- 获取鼠标按键Qt::LeftButton(); --- 左键Qt::RightButton(); --- 右键e-pos(); --- 获取该界面鼠标坐标e-x(); --- 获取该界面鼠标的x坐标e-y();e-globalPos(); --- 获取全局界面(屏幕)鼠标坐标e-globalX();e-globalY();void mouseReleaseEvent(QMouseEvent *e); --- 鼠标松开事件void mouseMoveEvent(QMouseEvent *e); --- 鼠标移动事件void mouseDoubleClickEvent(QMouseEvent *e); --- 鼠标双击事件void wheelEvent(QWheelEvent *e); --- 滚轮事件e-angleDelta();e-delta(); --- 获取滚轮增量void keyPressEvent(QKeyEvent *e); --- 按键按下事件e-key(); --- 获取按键Qt::Key_AQt::Key_0Qt::Key_Up;Qt::Key_Return/Qt::Key_Entervoid keyReleaseEvent(QkeyEvent *e); --- 按键松开事件void timerEvent(QTimerEvent *e); --- 定时器时间startTimer(int ms);void Widget::paintEvent(QPaintEvent *event) //绘图事件事件过滤器1) 安装事件过滤器le-installEventFilter(this); //从QObject继承出来的对象可以注册一个事件过滤器所有的事件先交给事件过滤器处理2) 重写事件过滤器/*参数watched: 对象event: 事件返回值true: 事件已处理false: 事件未处理*/bool Widget::eventFilter(QObject *watched, QEvent *event){if (event-type() QEvent::KeyPress){//通过watched判断是否是关注的对象产生了事件//通过event判断是否是关注的事件产生了//如果是想要关注的对象产生了想要关注的事件则进行处理处理完毕返回trueQKeyEvent *keyEvent static_castQKeyEvent *(event);if (keyEvent-key() Qt::Key_0 keyEvent-key() Qt::Key_9){qDebug() (char)(keyEvent-key());QString tmp ui-te2-toPlainText();tmp QString(QChar(keyEvent-key()));ui-te2-setText(tmp);return true;//返回true意味这事件处理完毕,这个事件不会再继续处理}}//对于不关心的事件,记得最后要调用基类的事件处理函数,维持原本的行为//让基类按照常规处理,一定要加上return QWidget::eventFilter(watched, event);}五、绘图void Widget::timerEvent(QTimerEvent *event)void Widget::paintEvent(QPaintEvent *event);update() --- 手动刷新界面重绘触发paintEvent事件,可以配合定时器事件timerEvent一起使用画家事件画笔画刷QPainter //画家QPen //笔QBrush //刷子QPainter p(this);//set this 表示设置主窗口为画布QPen pen(QColor(0, 0, 255));pen.setWidth(3);pen.setStyle(Qt::DashLine);p.setPen(pen); //设置画笔QBrush brush(QColor(255, 0, 0));brush.setStyle(Qt::Dense3Pattern);p.setBrush(brush); //设置画刷p.drawLine(0, 0, 100, 100);//画线p.drawRect(100, 100, 200, 100); //画矩形p.drawEllipse(QPoint(300, 300), 100, 50); //画椭圆p.drawEllipse(QPoint(450, 300), 100, 100); //画圆p.drawPixmap(xPos*50, 400, QPixmap(:/pic/luffy.png)); //画图片p.translate(width()/2, height()/2); //将画家的坐标系的原点移动到主窗口的中心点位置p.drawEllipse(QPoint(0, 0), 150, 150);p.save(); //保存当前的画家的坐标系//画秒针p.rotate(6); //将画家的坐标系顺时针旋转6°p.drawLine(QPoint(0, 0), QPoint(0, -100));p.restore(); //恢复之前保存的画家的坐标系文件操作文件类 QFileQFile file(filename);file.exists()file.setFileName(filename1);file.fileName()file.bytesAvailable()file.size()file.copy(2.txt)file1.errorString()bool file.open(); --- 打开文件QIODevice::ReadOnlyQIODevice::WriteOnlyQIODevice::ReadWriteQIODevice::TrancateQIODevice::Textfile.atEnd(); ---判断是否到达文件末尾file.read(); --- 按字节读取文件内容file.readLine(); --- 读取一行file.readAll(); --- 读取所有内容file.write(); --- 写入内容file.close(); --- 关闭文件线程和锁QThread QMutex//继承QThread类重写run方法start() --- 启动线程terminate() --- 终止线程QMutex: 互斥锁lock(); --- 加锁unlock(); --- 解锁QMutex mutex;//要使用QThread,一般可以新建自己的类,继承与QThreadMyThread::MyThread(QObject *parent) : QThread(parent){}//重写QThread的run()函数,线程要做的事情就是在run()函数里处理void MyThread::run(){while(1){mutex.lock(); //进入临界区前,加锁for (int i 0; i 10; i){std::cout intArray[i] ;}std::cout std::endl;mutex.unlock();//退出临界区,解锁,确定同时只有一个线程处理公共资源}}六、网络编程UPD/TCP网络编程qmake: QT network一、UDP连接UDP: QUdpSocket##UDP客户端//创建套接字socket new QUdpSocket(this);//连接数据到达信号和槽函数//QUdpSocket::readyReadconnect(socket, QUdpSocket::readyRead, this, Widget::data_ready_handler);//当前存在没有处理数据包while (socket-hasPendingDatagrams()){QByteArray datagram;//根据数据报的大小调节接收的字节数组的大小datagram.resize(socket-pendingDatagramSize());//接收套接字的数据到字节数组socket-readDatagram(datagram.data(), datagram.size());//将内容追加到接收区的文本编辑框中ui-te_receive-append(QString::fromLocal8Bit(datagram));}//发送数据报到服务器端,指定服务器的IP地址和端口if (socket-writeDatagram(ui-te_send-toPlainText().toLocal8Bit(), QHostAddress(ip), port.toUShort()) -1){qDebug() 发送数据失败;}else{qDebug() 发送数据成功;}##UDP服务器端//创建服务器的套接字socket new QUdpSocket(this);//服务器绑定IP地址和端口, 唯一的服务器比客户端多的一个步骤socket-bind(QHostAddress::AnyIPv4, 8888);//发送数据报到客户端if (socket-writeDatagram(ui-te_send-toPlainText().toLocal8Bit(), ip, port) -1){qDebug() 发送数据失败;}else{qDebug() 发送数据成功;}//读取数据报的数据,同时获取客户端的IP地址和指针,方便发送回数据给客户端socket-readDatagram(datagram.data(), datagram.size(), ip, port);二、TCP连接TCP: QTcpServer | QTcpSocket##TCP客户端socket new QTcpSocket(this);//连接成功信号connect(socket, QTcpSocket::connected, [](){ui-pb_connect-setText(断开连接);ui-pb_send-setEnabled(true);});//连接断连信号connect(socket, QTcpSocket::disconnected, [](){ui-pb_connect-setText(连接);ui-pb_send-setEnabled(false);});//数据就绪信号connect(socket, QTcpSocket::readyRead, [](){QByteArray data socket-readAll();//QString tmp ui-te_receive-toPlainText();ui-te_receive-append(QString::fromLocal8Bit(data));});//连接到服务器,使用服务器的IP地址和端口socket-connectToHost(QHostAddress(ip), port.toUShort());//发送数据到服务器if (socket-write(ui-te_send-toPlainText().toLocal8Bit()) -1) //使用toLocal8Bit可以支持中文{qDebug() 客户端发送数据失败;}else{qDebug() 客户端发送数据成功;}//发送数据到服务器QByteArray data socket-readAll();ui-te_receive-append(QString::fromLocal8Bit(data)); //使用fromLocal8Bit可以支持中文##TCP服务器端//创建TCP服务器对象server new QTcpServer(this);//设置监听的IP地址和端口server-listen(QHostAddress::AnyIPv4, 8888);//新连接信号connect(server, QTcpServer::newConnection, [](){if (server-hasPendingConnections())//如果有待处理的新连接{socket server-nextPendingConnection();//处理新连接, 获得通信套接字,以后双方的通信基于此套接字,每个新连接会产生一个新的通信套接字}//断连的信号connect(socket, QTcpSocket::disconnected, [](){ui-pb_send-setEnabled(false);});//接收数据就绪信号connect(socket, QTcpSocket::readyRead, [](){//读取接收到的数据QByteArray data socket-readAll();ui-te_receive-append(QString::fromLocal8Bit(data));});});//发送数据到客户端if (socket-write(ui-te_send-toPlainText().toLocal8Bit()) -1){qDebug() 服务器发送数据失败;}else{qDebug() 服务器发送数据成功;}七、SQLITE数据库SQLITE 数据库编程qmake: QT sql使用到的类:QSqlDatabase //数据库连接QSqlQuery //数据SQL语句执行//创建SQLITE数据库连接//不指定数据库连接的名字, 数据库连接缺省的名字为 qt_sql_default_connectionQSqlDatabase db_student QSqlDatabase::addDatabase(QSQLITE);//使用SQLITE数据库, 数据库连接缺省的名字为 qt_sql_default_connection//指定数据库连接的名字为my_db_connectionQSqlDatabase db_student QSqlDatabase::addDatabase(QSQLITE, my_db_connection);//使用SQLITE数据库, 指定数据库连接的名字为my_db_connection//设置数据库的文件名db_student.setDatabaseName(db_file_name);//打开数据库if (!db_student.open()){qDebug() 打开数据库失败1;}//关闭数据库db_student.close();//使用当前的数据库连接 执行SQL操作QSqlQuery query(db_student); //指定一个数据库的连接QSqlQuery query; //不指定数据库连接, 它会使用缺省的数据库连接 qt_sql_default_connection//创建表QString queryStr create table Student (id varchar(64) PRIMARY KEY, name varchar(64), gender varchar(64), age int);if (!query.exec(queryStr)){qDebug() 创建数据库表失败;qDebug() query.lastError().text();}//数据插入//数据插入方式1queryStr insert into Student values(2309250001, 张三, 男, 13);if (!query.exec(queryStr)){qDebug() 插入数据失败;qDebug() query.lastError().text();}//数据插入方式2queryStr insert into Student values(?,?,?,?);query.prepare(queryStr);query.addBindValue(2309250002);query.addBindValue(李四);query.addBindValue(男);query.addBindValue(12);if (!query.exec()){qDebug() 插入数据失败2;qDebug() query.lastError().text();}//数据插入方式3QString queryStr insert into Student values(:id,:name,:gender,:age);query.prepare(queryStr);query.bindValue(:id, ui-le_id-text());query.bindValue(:name, ui-le_name-text());query.bindValue(:gender, ui-cbb_gender-currentText());query.bindValue(:age, ui-le_age-text().toInt());if (!query.exec()){qDebug() execute queryStr failed;qDebug() query.lastError().text();}//查询数据QString queryStr select * from Student;if (!query.exec(queryStr)){qDebug() execute queryStr failed;qDebug() query.lastError().text();}QString queryStr select * from Student where id :id;query.prepare(queryStr);query.bindValue(:id, ui-le_id-text());if (!query.exec()){qDebug() execute queryStr failed;qDebug() query.lastError().text();}while (query.next()){ui-le_name-setText(query.value(1).toString());ui-cbb_gender-setCurrentText(query.value(2).toString());ui-le_age-setText(query.value(3).toString());}//修改数据QString queryStr update Student set name?, gender?,age? where id?;query.prepare(queryStr);query.addBindValue(ui-le_name-text());query.addBindValue(ui-cbb_gender-currentText());query.addBindValue(ui-le_age-text());query.addBindValue(ui-le_id-text());if (!query.exec()){qDebug() execute queryStr failed;qDebug() query.lastError().text();}//删除数据QString queryStr delete from Student where id :id;query.prepare(queryStr);query.bindValue(:id, ui-le_id-text());if (!query.exec()){qDebug() execute queryStr failed;qDebug() query.lastError().text();}八、 QTableWidget控件//设置显示为4列ui-tableWidget-setColumnCount(4);QStringList list;list 学号 姓名 性别 年龄;ui-tableWidget-setHorizontalHeaderLabels(list);//根据数据库的记录的条数来设置行数ui-tableWidget-setRowCount(lists.size());//设置tableWidget的某一项ui-tableWidget-setItem(i, j, (new QTableWidgetItem(lists.at(i).at(j))));//获得某一项QTableWidgetItem *item ui-tableWidget-item(i, 0);//获得行数int row ui-tableWidget-rowCount();//插入1行, 0 baseui-tableWidget-insertRow(row);//获得某一项的数据ui-tableWidget-item(row, count)-data(0).toString();ui-tableWidget-item(row, count)-data(0).toInt();//获得当前选中的行 0 baseui-tableWidget-currentRow();//设置id不能被用户编辑QTableWidgetItem *item ui-tableWidget-item(i, 0);item-setFlags(item-flags() (~Qt::ItemIsEditable));

相关文章:

QT(二):Qt相关控件的使用和设置,Qt对话框的使用,画图事件的创建和设置,线程和锁的创建利用,网络编程,TCP和UDP客户端及服务器的创建,SQLITE数据库,QTableWidget控件的使用

一、相关控件及操作配置1、QPushButton & QtoolButton(按钮)setText(QString) ---- 设置按钮上的内容setFixedSize(int w, int h) --- 设置固定大小setFixedHeight(int) --- 设置固定高度setFixedwidth(int) --- 设置固定宽度setMaximumSize(…...

AF350标记α-银环蛇d素,AF350-a-Bungarotoxin核心功能与应用场景

α-Bungarotoxin AF350,AF350标记α-银环蛇d素,AF350-a-Bungarotoxin,AF350-α-BTX,银环蛇d荧光标记一、试剂本质与结构解析α-Bungarotoxin, AF350(以下简称“AF350-α-BTX”)是一种由台湾银环蛇d液中提取…...

10分钟上手SIMP:从安装到基础配置的快速入门指南

10分钟上手SIMP:从安装到基础配置的快速入门指南 【免费下载链接】SIMP A system automation and configuration management stack targeted toward operational flexibility and policy compliance. 项目地址: https://gitcode.com/gh_mirrors/si/SIMP SIMP…...

基于深度学习的本科毕业设计

1 适用对象 本科生关于目标检测、语义分割的毕业设计。 2 深度学习基础知识 2.1 深度学习理论 (1) 吴恩达深度学习视频(转载)https://www.bilibili.com/video/BV1Gm421u73z/?spm_id_from333.337.search-card.all.click&v…...

【亲测免费】 探索未来打印体验:ESP3D 智能3D打印机固件

探索未来打印体验:ESP3D 智能3D打印机固件 【免费下载链接】ESP3D FW for ESP8266/ESP8285/ESP32 used with 3D printer 项目地址: https://gitcode.com/gh_mirrors/es/ESP3D 项目介绍 ESP3D是一个创新的开源固件,专为ESP8266和ESP32芯片设计&am…...

探索Bunny项目:一个智能数据处理与分析的利器

探索Bunny项目:一个智能数据处理与分析的利器 【免费下载链接】Bunny A family of lightweight multimodal models. 项目地址: https://gitcode.com/gh_mirrors/bunny/Bunny 项目简介 是一款由BAAI-DCAI团队开发的开源项目,它旨在提供高效、灵活…...

IT从业人员能做哪些兼职-总有一款适合你(非常详细)零基础入门到精通,收藏这一篇就够了

作为IT从业者,在闲暇时间可以尝试以下一些兼职: 1. 程序员兼职:在各大IT招聘网站上,有很多针对IT从业者的兼职职位,可以根据自己的技能和时间情况选择相应的岗位,如开发小程序、网站等。 2. IT培训师&…...

TextAttack API详解:打造属于你的NLP对抗性训练框架

TextAttack API详解:打造属于你的NLP对抗性训练框架 【免费下载链接】TextAttack TextAttack 🐙 is a Python framework for adversarial attacks, data augmentation, and model training in NLP https://textattack.readthedocs.io/en/master/ 项目地…...

[特殊字符]现代机器人学课程:理论与实践的完美融合[特殊字符]

🤖现代机器人学课程:理论与实践的完美融合🚀 【免费下载链接】modern-robotics-course This repository is all the lessons for Modern Robotics Course. 项目地址: https://gitcode.com/gh_mirrors/mo/modern-robotics-course 在科…...

带你解开“人寿类商业保险”的真面目

本内容较浅显易懂的简述了保险险种的分类、查询、配置,以及保险中的掩藏项。主要以个人所购买的两款人寿类商业保险为例说明。持续更新,原创不易! 目录: 一、保险险种的分类 1、意外险 2、寿险 3、重疾险 4、医疗险 二、保…...

【亲测免费】 SCUT_thesis 开源项目使用教程

SCUT_thesis 开源项目使用教程 【免费下载链接】SCUT_thesis 华南理工大学硕博士学位论文LaTeX模板。Latex templates for the thesis of South China University of Technology 项目地址: https://gitcode.com/gh_mirrors/sc/SCUT_thesis 1. 项目的目录结构及介绍 SCU…...

win11+vs2019 解决qt界面中文乱码问题和linguist不识别或乱码问题

1.修改文档编码联机搜索下载插件。安装这个插件便于查看及修改当前文档编码。将你含有 tr("中文") 的文档编码全部换成UTF-8(BOM)(解决linguist不识别或乱码问题)。界面还是乱码的话,把编译选项也加上。项目 → 属性 → C/C → 命令…...

AperiSolve 开源项目教程

AperiSolve 开源项目教程 【免费下载链接】AperiSolve Steganalysis web platform 项目地址: https://gitcode.com/gh_mirrors/ap/AperiSolve 1. 项目的目录结构及介绍 AperiSolve 项目的目录结构如下: AperiSolve/ ├── app/ │ ├── __init__.py │…...

Deepagents中间件详解:如何自定义和扩展代理能力

Deepagents中间件详解:如何自定义和扩展代理能力 【免费下载链接】deepagents Deepagents is an agent harness built on langchain and langgraph. Deep agents are equipped with a planning tool, a filesystem backend, and the ability to spawn subagents - m…...

计算无人机巡逻覆盖地块数Java题解

问题描述 一块地用一个从 0 开始索引的二维二进制矩阵 block 表示,其中 0 表示空闲地块,1 表示放有障碍物的地块。在每个测试用例中,地的左上角永远是空闲的。一架无人机面向右侧,从左上角开始巡逻。无人机将一直前进,直到抵达的边界或遇到障碍物地块时,无人机将会顺时针…...

Tiny Wings 项目推荐

Tiny Wings 项目推荐 【免费下载链接】tiny-wings Remake of the popular iPhone game. 项目地址: https://gitcode.com/gh_mirrors/ti/tiny-wings 1、项目的基础介绍和主要的编程语言 Tiny Wings 是一个开源项目,旨在重现流行的 iPhone 游戏 Tiny Wings 的…...

java毕业设计下载(全套源码+配套论文)——基于java+JSP+J2EE的户籍管理系统设计与实现(毕业论文+程序源码)

基于javaJSPJ2EE的户籍管理系统设计与实现(毕业论文程序源码) 大家好,今天给大家介绍基于javaJSPJ2EE的户籍管理系统设计与实现,更多精选毕业设计项目实例见文末哦。 文章目录: 基于javaJSPJ2EE的户籍管理系统设计与…...

java毕业设计下载(全套源码+配套论文)——基于java+JSP+MyEclipse的网上订餐系统设计与实现(毕业论文+程序源码)

基于javaJSPMyEclipse的网上订餐系统设计与实现(毕业论文程序源码) 大家好,今天给大家介绍基于javaJSPMyEclipse的网上订餐系统设计与实现,更多精选毕业设计项目实例见文末哦。 文章目录: 基于javaJSPMyEclipse的网上…...

材料新人成长地图:福尔蒂应用工程师首年实战——从GMP取样到DOE设计

刚入行那会儿,我常被几个词绕得晕头转向:GMP取样是什么流程?DOE设计到底怎么搭实验?为什么客户一句“这个色差不稳定”,我就得翻三遍配方表、查两次干燥参数、再跑一趟车间复核喂料精度?直到加入青岛福尔蒂…...

Swagger2 自定义排序

分享一下SpringSwagger2在线文档自定义排序的代码。 这里参考swagger2 接口排序_swagger接口排序-CSDN博客提供的思路&#xff0c;并在此基础上做了优化。 1、引用pom信息 <!--swagger依赖(pojo注解)--><dependency><groupId>io.swagger</groupId>&l…...

C语言简易计算器程序的实现与优化

目录 一、基础版本&#xff1a;简单直接的功能实现 完整代码 版本分析 优点 缺点 二、进阶版本&#xff1a;函数指针数组优化 完整代码 版本分析 核心优化点 优点 三、改进版本&#xff1a;功能解耦与模块化 完整代码 版本分析 核心设计思想&#xff1a;模块化解…...

优秀堡垒机功能学习

用户管理 1. 用户&#xff0c;角色 2. 资产授权给角色&#xff08;用户&#xff09;资源管理 1. 新建&#xff1a;新建&#xff0c;导入&#xff0c;同步第三方云&#xff0c;同步用户自己的系统 2. 更新&#xff1a;定时同步&#xff0c;定时检测状态 3. Group&#xff1a;资源…...

Coredump-X: movaps 可能会导致 段错误(SIGSEGV)

文章目录 简介 需要注意这种情况。 gcc 代码片段 GCC的选择 movups movaps -mpreferred-stack-boundary=num intel 文档说明 简介 这个情况,还是第一次看到,gcc在做优化的时候,对于memset函数,可能使用sse相关的movups/movaps这种指令来提升性能,但是这两个指令的区别是m…...

企业决策视角下微服务全链路性能瓶颈分析平台对比及实践指南

核心观点摘要 微服务架构提升了业务弹性&#xff0c;却因跨服务调用链的不可见性造成性能盲区&#xff0c;需借助全链路性能分析平台实现端到端可观测与瓶颈定位。全链路性能分析&#xff0c;是指采集并关联从前端入口到后端微服务的请求轨迹与资源消耗数据&#xff0c;其核心特…...

GARbro:视觉小说资源浏览器

GARbro&#xff1a;视觉小说资源浏览器 【免费下载链接】GARbro Visual Novels resource browser 项目地址: https://gitcode.com/gh_mirrors/gar/GARbro 项目介绍 GARbro 是一款专门用于浏览和操作视觉小说&#xff08;Visual Novels&#xff0c;简称VN&#xff09;资…...

电源动态响应测试

电源动态响应测试&#xff0c;旨在评估电源在面对快速变化负载和电压条件时的性能表现。确保电源系统能够在系统负载发生瞬时变化时快、有效的调整输出电压&#xff0c;仍然提供稳定、可靠的电源输出&#xff0c;以维持整个系统的稳定性和可靠性。电源上升通道和下降通道测试。…...

UE 最全FString字符串与各格式转换 输出

一、UE4 Source Header References CString.h UnrealString.h NameTypes.h StringConv.h (TCHAR_TO_ANSI etc) CString.h可以查到更多&#xff0c;如 atoi64 (string to int64) Atod (string to double precision float) 二、日志打印 1.输出字符串到output log中 1.1 最…...

UE 树形图 C++版

1.创建以下三个C类(1)UTreeViewItemBase(基类UObject)UCLASS() class UTreeViewItemBase : public UObject {GENERATED_BODY() public:UTreeViewItemBase();virtual ~UTreeViewItemBase() override; public:FString Id;//层级int32 Level;//标签FText Label;//与自身对应的Acto…...

UE 树形图(Tree View)_1

一.树形图介绍1.所需类型(1)TreeView控件:作为树形图主体,后面简称树形图(2)EntryWidget:本质是一个UserWidget,作为树形图中的子元素存在,必须要实现UserObjectListEntry接口,否则无法作为树形图的子元素.后面简称Entry(3)TreeViewItem:EntryWidget对应的信息or实体,基类为UOb…...

华为OD机试双机位C卷-生成哈夫曼树 (Py/Java/C/C++/Js/Go)

生成哈夫曼树 华为OD机试双机位C卷 华为OD上机考试双机位C卷 100分题型 华为OD机试双机位C卷真题目录点击查看: 华为OD机试双机位C卷真题题库目录|机考题库 + 算法考点详解 题目描述 给定长度为 n 的无序的数字数组,每个数字代表二叉树的叶子节点的权值,数字数组的值均大…...