Qt(c++)入门知识总结

C++/QT学习笔记 C++自带的命名空间std,要声明using namespace std;才可使用,里面是C++语言基本的APInamespace 自定义名称 {这里面可以是数据,函数,与项目相关的一些算法等 } 有点类似C语言的结构体,但又比结构体功能强大,定义到头文件中,使用时要包含头文件还要声明。 阅读详情

信号槽机制

信号槽机制是Qt框架的特色, 可以简单描述为,一个对象触发了一个信号,如果某个对象 对这个 信号感兴趣,那么就可以进行连接,当这个对象接收到这个信号后,可以做相应的处理,通常这种处理是交给槽函数来实现的。
// 信号槽的使用
// connect(sender,signal,receiver,slot)
// sender 信号发送者 signal 要发送的信号 receiver 信号接收者 slot 槽函数
class Teacher{
	// 自定义信号
	signal:
		// 注意 信号 只声明 不实现
		void hungry();
};
class Student{
	slots:
		// 槽函数
		void treat();
};
// 槽函数实现
void Student::treat(){
	qDebug() << "该吃饭了!";
}
// 触发信号方法
void MyWidget::classIsOver(){
	// 发送信号
	emit teacher ->hungry();
}
teacher = new Teacher(this); // this 添加children 表 方便回收
student = new Student(this); 
// 信号槽连接
connect(teacher,&Teacher::hungry,student,&Student::treat);
/*
	注意:
		1.对于有重载的信号和槽 使用函数指针处理
			void(Teacher::*teacherSignal)(QString)=&Teacher::hungry; // 这里假设hungry信号 被重载过
			void(Student::*studentSlot)(QSting)=&Student::treat; // 这里treat 槽函数被重载过
			connect(teacher,teacherSignal,student,studentSlot);// 重载后的连接
		2.信号和槽函数的返回值是void
		3.槽函数是普通成员函数 会受到public private protected的影响
		4.使用emit 关键字触发信号
		5.任何成员函数、static 函数、全局函数 lambda表达式都可以作为槽函数
		6.信号 和 槽必须保持 参数一致 即类型一致,槽函数的参数可以比信号少
		7.一个信号可以和多个槽连接
		8.多个信号可以连接到一个槽
		9.一个信号可以连接到另外的一个信号
		10.信号槽可以取消连接 
*/

.pro文件

QT += core gui  # 项目包含的模块
greaterThan(QT_MAJOR_VERSION,4): QT += widgets # 大于Qt4版本才包含widget模块
TARGET=QfFirst # 生成的应用程序名称 Windows下是.exe 文件名称
TEMPLATE=app # 模板类型  应用程序使用的模板
SOURCES+=main.cpp\  # 源文件
			mywidget.cpp
HEADERS += mywidget.h # 头文件

说明:
1. 注释 从# 开始直到 一行结束
2. TEMPLATE 模板变量告诉qmake 为这个应用程序生成哪种makefile

  • app 建立一个应用程序的makefile,这是默认值,所以如果这个模板没有被指定,这个将被使用
  • lib 建立一个库的makefile
  • vcapp 建立一个应用程序的VisualStudio项目文件
  • subdirs 这是一个特殊的模板,它可以创建一个能够进入特定目录并且为一个项目文件生成makefile 并且为它调用make的makefile
  1. TARGET 指定生成应用程序名:
  2. HEADERS 指定工程包含的头文件
  3. FORMS 工程中包含的 ui 设计文件
  4. SOURCES 工程中包含的源文件
  5. RESOURCES 工程包含的资源文件
  6. CONFIG += c++11 # 使用c++11的特性

按钮(QPushButton)

#include <QPushButton>
QPushButton *btn = new QPushButton;
// 设置父窗口
btn ->setParent(this);
// 设置文字
btn ->setText("文件");
// 移动位置
btn ->move(100,100)
/*第二种创建方式*/
QPushButton *btn2 = new QPushButton("哈比布",this);
// 重新指定窗口大小
this ->resize(600,400);
// 设置窗口标题
this ->setWindowTitle("第一个窗口");
// 限制窗口大小
this ->setFixedSize(600,400);

Qt窗口坐标系

以左上角为原点(0,0) X 向右增加 Y向下增加
qt 窗口坐标系

Lambda

c++11 中的Lambda 表达式用于定义并创建匿名的函数对象
语法:

/*
[函数对象参数](操作符重载函数参数)mutable ->返回值{函数体}
*/

[] 函数对象参数 标识一个lambda 的开始 必须存在,函数对象参数是传递给编译器自动生成的函数对象类的构造函数的。

  • 空 没有使用任何函数对象参数
  • = 函数体可以使用Lambda 所在作用范围内所有可见的局部变量,包括Lambda所在类的this,并且是值传递方式 相当于告诉编译器自动按值传递所有局部变量
  • & 告诉编译器按引用传递了局部变量
  • a 将a按值传递,按值传递时候,函数体内不能修改传递进来的a的拷贝,因为默认情况下函数是const的, 要修改a的拷贝 可以添加 mutable 修饰符
  • &a 将a 按引用传递
  • a,&b 将a 安值进行传递,b按引用传递
  • =,&a,&b 除了a和b 按引用传递外,其他参数都按值传递
  • &,a,b 除a和b 按值传递外,其他参数都按引用传递

mutable 可修改标识符:按值传递参数时,加上mutable 修饰符 可以安值传递进来的宝贝
函数返回值: -> 返回值类型 标识函数返回值的类型 当返回为void,或者只有一处 return的地方
{} 是函数体 这部分不能省略 但函数体可以为空

QMainWindow

QMainWindow 是一个为用户提供主窗口程序的类,包含一个菜单栏(men bar),多个工具栏(tool bars),多个铆接部件(dock widgets),一个状态栏 及一个中心部件(central widget),是许多应用程序的基础。
菜单栏:
一个主窗口最多只有一个菜单栏,位于主窗口顶部,主窗口标题栏下面
  • 创建菜单栏
QMenuBar *menBar() const
  • 创建菜单,调用QMenu成员函数 addMenu 来添加菜单
QAction* addMenu(QMenu *menu);
QMenu* addMenu(const QString &title);
QMenu* addMenu(const QIcon &icon,const QString &title);
  • 创建菜单项
// 调用 QMenu 的成员函数 addAction来添加菜单项
QAction *addAction(const QString &text);
// addSeparator  用于添加分隔线
/*
Qt并没有专门的菜单项类,只是使用一个QAction类,抽象出公共的动作。当我们把QAction 对象添加到菜单,就显示一个菜单项,添加工具栏,就显示成一个工具按钮.用户可以通过点击菜单项,点击工具栏按钮,点击快捷键来激活这个动作。
*/
工具栏
	主窗口的工具栏上可以有多个工具条。一般采用一个菜单对应一个工具条的方式,也可根据需要进行工具条的划分 QToolBar *toolBar = new QToolBar(this)  生成工具栏
  • 直接调用QMainWindow类的addToolBar() 函数获取主窗口的工具条对象,每增加一个工具条需要调用一次该函数
  • 插入工具条的动作,在工具条上添加操作,通过QToolBar 类的 addAction 函数添加
  • 工具条是一个可移动的窗口,它的停靠区由QToolBar 的 allowAreas 决定
    Qt::LeftToolBarArea 停靠在左侧
    Qt::RightToolBarArea 停靠在右侧
    Qt::TopToolBarArea 停靠在顶部
    Qt::BottomToolBarArea 停靠在底部
    Qt::AllToolBarAreas 以上四个位置都可停靠
    使用 setAllowedAreas() 函数指定停靠区域
    setAllowAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea)
    使用setMoveable() 函数设定工具栏的可移动性:
状态栏
  • 派生自QWidget 类,使用方法与QWidget 类似
  • 状态栏也最多有一个
QStatusBar *stBar = statusBar();
setStatusBar(stBar);
QLabel *label = new QLabel(提示信息,this);
stBar ->addWidget(label); // 添加提示信息到左侧
QLabel *label2 = new QLabel("右侧提示信息",this);
stBar ->addPermanentWidget(label2);
铆接部件(浮动窗口)
QDockWidget *dock = new QDockWidget("标题",this);
addDockWidget(Qt::BottomDockWidgetArea,dock);
// 设置停靠范围
dock ->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);
核心部件(中心部件)
核心部件只能有一个,中心显示的部件都可以作为核心部件
QTextEdit *edit = new QTextEdit(this);
setCentralWidget(edit);
资源文件
Qt 资源系统是一个跨平台的资源机制,用于将程序运行时所需要的资源以二进制的形式存储与可执行文件内部。如果你的程序需要加载特定的资源(图标、文本翻译等),那么,将其放置在资源文件中,就不需担心这些文件的丢失。如果你将资源以资源文件形式存储,它是会编译到可执行文件内部。使用Qt Creator可以很方便地创建资源文件。我们可以在工程上点右键,选择添加文件,在Qt分类下找到Qt资源文件:

qt
点击 “选择…” 按钮,打开 “新建Qt 资源文件” 对话框。在这里我们输入资源文件的名称和路径:
qt
点击下一步,选择所需要的版本控制系统,然后直接选择完成。我们可以在Qt Creator 的左侧文件列表中看到 “资源文件” 一项,也就是我们新创建的资源文件:
在这里插入图片描述
右侧的编辑区有个"添加",我们首先需要添加前缀,比如我们将前缀取名为images。然后选中这个前缀,继续点击添加文件,可以找到我们所需添加的文件。

对话框
对话框是GUI 程序中不可缺少的组成部分,很多不能或者不适合放入主窗口的功能组件都必须放在、对话框中设置。对话框通常会是一个顶层窗口,出现在程序的最上层,用于实现短期任务或者简洁的用户交互。
/*
	设计一个类继承 QDialog (QDialog 及其子类,以及所有的Qt::Dialog类型的类 对于parent 指针都有额外的解释: 如果 parent 为 NULL,则该对话框会作为一个顶层窗口,否则则作为其父组件的子对话框 默认出现的位置是 parent 的中心 顶层窗口与非顶层窗口的区别在于,顶层窗口在任务栏会有自己的位置,而非顶层窗口则会共享其父组件的位置)
	1. 模态对话框 会阻塞同一应用程序中其他窗口的输入
		1) 应用程序级别的模态
			当该种模态的对话框出现时,用户必须首先对对话框进行交互,直到关闭对话框,然后才能访问程序中替他的窗口
		2)	该模态仅仅阻塞与对话框关联的窗口,但是依然允许用户与程序中其他窗口交互。窗口级别的模态尤其使用于多窗口模式。
	2. 非模态对话框 不会阻塞
*/
布局管理

/*
	1. 绝对定位
		1.1 要素:组件的坐标 和长宽值
		1.2 布局定位: 将组件放入布局,由布局管理器进行管理
	* QHBoxLayout: 水平从左向右布局
	* QVBoxLayout: 竖直从上到下布局
	* QGridLayout:网格布局 类似于HTML的table
*/

qt

widget
/*
	使用Containers 容器进行布局
	将控件放入容器中
	在widget 中使用 水平、垂直、栅格 进行布局
*/
QLabel
/*
	作用: 显示文本、图片、和动画
*/
// 设置显示内容
void setText(const QString &);
// 普通字符串文本显示
QLable *lable = new QLable;
lable ->setText("hello world");
// 显示HTML字符串 比如超链接
label ->setText("<a href='www.baidu.com'>百度一下</a>");
//显示图片 setPixmap(QLabel成员函数) 设置图片
void setPixmap(const QPixmap &)
// 步骤
QPixmap pixmap // 定义QPixmap 图像
pixmap.load(":资源路");  //加载图片 指定资源路径 比如:/image/boat.jpg
// 将图片放置到QLabel 中
QLabel *label = new QLabel;
label.setPixmap(pixmap);

// 显示动画 只能用于gif 动画
void setMoive(QMovie *moive);
// 步骤
QMovie *movie = new QMovie(":/Mario.gif"); //定义QMovie 对象并初始化
movie ->start(); // 播放加载动画
// 将动画放置到QLabel 中
QLabel *label = new QLabel;
label ->setMovie(movie);
QLineEdit
// 提供单行文本编辑框
QString text() const; // 获取编辑框内容
void setText(const QString &); // 设置编辑框内容 
void setEchoMode(EchoMode mode); // 设置显示模式
/*
	EchoMode 是枚举类型 
		QLineEdit::Normal 按照输入的内容显示
		QLineEdit::NoEcho 不显示任何内容 无法看到用户的输入
		QLineEdit::Password 密码模式 输入的字符根据平台转为特殊字符
		QLineEdit::PasswordEchoEdit  编辑时显示字符,否则显示字符作为密码
		void setTextMargins(int left,int top,int right,int bottom); // 设置QLineEdit左侧留出空白区域
*/
自定义控件
// SmallWidget控件 继承自 QWidget
SmallWidget::SmallWidget(QWidget* parent):QWidget(parent){
	spin = new QSpinBox(this);
	slider = new QSlider(Qt:Horizontal,this);

	// 创建布局对象
	QHBoxLayout *layout = new QHBoxLayout;
	// 将控件添到布局中
	layout ->addWidget(spin);
	layout ->addWidget(slider);
	// 将布局设置到窗口中
	setLayout(layout);
	// 信号槽添加
	connect(spin,static_case<void (QSpinBox:: *)(int)>(&QSpinBox::valueChanged),slider,&QSlider::setValue);
	connect(slider,&QSlider::valueChanged,spin,&QSpinBox::setValue);
}
消息机制和事件
/*
	1. Qt程序 需要在main() 函数创建一个 QApplication对象 然后调用exec() 函数,执行exec() 函数之后,程序进入事件循环监听
	2. Qt中所有的事件类 继承自QEvent, 这个事件传递给QObject的event() 函数,event()函数不直接处理事件,是按照事件对象类型分派特定的事件处理函数(event handler)
*/
/*
	QWidget 事件处理回调函数
		keyPressEvent()
		keyReleaseEvent()
		mouseDoubleClickEvent()
		mouseMoveEvent()
		mousePressEvent()
		mouseReleaseEvent()
*/
class EventLabel : public QLabel{
	protected:
		void mouseMoveEvent(QMouseEvent *event);
		void mousePressEvent(QMouseEvent *event);
		void mouseReleseEvent(QMouseEvent *event);
};
void EventLabel::mouseMoveEvent(QMouseEvent *event){
	this ->setText(QString("<center><h1>Press:(%1,%2)</h1></center>").arg(QString::number(event ->x()),QString::number(event ->y())));
}
void EventLabel::mousePressEvent(QMouseEvent *event){
	this ->setText(QString("<center><h1>Press:(%1,%2)</h1></center>").arg(QString::number(event ->x()),QString::number(event ->y())));
}
void EventLabel::mouseReleaseEvent(QMouseEvent *event){
	QString msg;
	msg.sprintf("<center><h1>Relese:(%d,%d)</h1></center>",event ->x(),event ->y());
	this ->setText(msg);
}
int main(int argc,char *argv[]){
	QApplication *label = new EventLabel;

	EventLabel *label = new EventLabel;
	label ->setWindowTitle("MouseEvent~~~");
	label ->resize(300,300);
	label ->show();
	return 0;
}
event()
/*
	1.事件创建完毕后,Qt将这个事件对象传递给 QObject的 event() 函数,event() 函数负责分发给不同的事件处理器
	2.如果希望在事件分发之前 做一些操作 重写event() 函数
*/
bool CustomWidget::event(QEvnet *e){
	if(e ->type() == QEvent::KeyPress){
		QKeyEvent *keyEvent = static_case<QKeyEvent *>(e);
		if(keyEvent() ->key() == Qt::Key_Tab){
			qDebug() << "You press tab";
			return true;
		}
	}
	return QWidget::event(e);
}
事件过滤器
class MainWindow : public QMainWindow{
	public:
		MainWinow();
	protected:
		bool eventFilter(QObject *obj,QEvent *event);
	private:
		QTextEdit *textEdit;	
}
MainWindow::MainWindow(){
	textEdit = new QTextEdit;
	setCenterWidget(textEdit);
	textEdit ->installEvent(this);
}
bool MainWindow::eventFilter(QObject *obj,QEvent *event){
	if(obj == textEdit){
		if(event ->type() == QEvent::KeyPress){
			QKeyEvent * keyEvent = static_case<QKeyEvent *>(event);
			qDebug() << keyEvent ->key();
			return true;
		}else{
			return false;
		}
	}else{
		return QMainWindow::eventFilter(obj,event);
	}
}
/*
	MainWindow 是我们定义一个类,重写eventFilter()函数,过滤特定组件上的事件,首先需要判断这个对象是不是我们感兴趣的组件
		是返回true 也就是过滤了这个事件, false 不关注的事件  其他组件则调用父类的函数处理
	eventFilter() 相当于创建了过滤器,可以通过removeEventFilter() 函数移除 过滤器
	installEventFilter() 如果一个对象存在多个事件过滤器 最后一个安装的会第一个执行,先进先执行的顺序
文件系统
/*
	QIODevice: 所有I/O 设备的父类
	QFileDevice: 提供文件操作的通用实现
	QFile: 访问本地文件或者嵌入资源
	QTemporaryFile: 创建和访问本地文件系统的临时文件
	QBuffer: 读写QbyteArray,内存文件
	QProcess: 运行外部程序,处理进程间通讯
	QAbstractSocket: 所有套接字类的父类
	QTcpSocket: Tcp 协议网络数据传输
	QUdpSocket: 传输UDP 报文
	QSslSocket: 使用SSL/TLS 传输数据
*/
int main(int argc,char *argv[]){
	QApplication app(argc,argv);
	QFile file("in.txt");
	if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){
		qDebug() << "Open file failed";
		return -1;
	}else{
		while(!file.atEnd()){
			qDebug() << file.readLine();
		}
	}
	QFileInfo info(file);
	qDebug() << info.isDir();
	qDebug() << info.isExacutable();
	qDebug() << info.baseName();
	qDebug() << info.completeBaseName();
	qDebug() << info.suffix();
	qDebug() << info.completeSuffix();
	return app.exec();
}
C++和QT Qt 是一个跨平台的 C++图形用户界面应用程序框架。它为应用程序开发者提供建立艺术级图形界面所需的所有功能。它是完全面向对象的,很容易扩展,并且允许真正的组件编程。 阅读详情

相关推荐

C++QT入门_c++ qt

​ Qt 是一个跨平台的C++图形用户界面应用程序框架。它为应用程序开发者提供建立艺术级图形界面所需的所有功能。它是完全面向对象的,很容易扩展,并且允许真正的组件编程。常见GUI:QT:支持多平台开发;支持css;面向对象特性体现突出;发展趋势良好。MFC:只能在windows开发;运行程序效率高;库的安全性好;public slots: // 添加槽函数private:// 重新更新// 设置 完成之后可以拉伸。

2401_87555420的博客 1743

QT/C++从新手到老手系列之QT基础篇

本系列课程励志于带领你学习QT5/C++,从开发环境(QTCreator和VS2013两种)搭建到实际项目实战,从入门到精通。每一个部分均有理论知识介绍、接口讲解、实例代码讲解,讲解过程中不断穿插老师在开发过程中遇到的问题及解决方法。本阶段主要学习Qt开发环境搭建(QTCreator及VS)、程序的发布、GUI控件的属性、方法、布局管理、容器类、QT事件处理等,学完本阶段后可以开发小型的应用程序。

Qt(C++)入门学习

本文适用于在c++ cmake项目中使用qt,需要快速入门的同学。

m0_47096428的博客 8483

C++ Qt编程

本课程以C++编程为导向来详细介绍Qt编程,课程包括十四个部分,分别介绍Qt的编程环境、窗体应用、控件应用、组件应用、文件操作、图形图像操作、多媒体应用、对系统操作、对注册表操作、数据库应用,网络应用开发、进程与线程应用、数据的加密与解密以及Qt程序打包部署;课程全部以现场编程教学,手把手的教会大家C++ Qt的编程,欢迎大家来学习。

【QT从入门helloworld到进阶QT(C++)部署YOLOV5】

Q_OBJECTpublic:private:第 7 行,定义名称空间 Ui ,里面有一个类 MainWindow ,这个 MainWindow 和第 10 行里的 MainWindow 不是同一个对象。实际上,这个文件里的 MainWindow 类有一个成员*ui 就是指向第 19 行的 Ui::MainWindow 的指针。这都是为了使用.ui 文件设计界面的。第 12 行,MainWindow 的声明中第一行是 Q_OBJECT,这是一个宏,由 Qt 进行处理,这。

weixin_47869094的博客 2126

基于Qt实现的简易计算器(C++)

本人刚学Qt时实现了一个计算器的简单应用程序,刚好最近的程序设计训练有计算器这道题目,于是便完善了一下,拿出来分享给大家, 说不定有和我选一样的同学看到。 这是运行后的应用程序,由于我的电脑是Win7系统,所以我就参考Win7自带的应用计算器设计开发。 本程序参考《设计模式》将用户界面与业务逻辑分离开,并通过业务接口关联。 设计原则:功能模块之间需要进行解耦。 核心思想:强内聚,弱耦合...

weixin_41477765的博客 5881

Qt入门(C++)

对于基类的选择有三个选项,分别是QMainWindow、QWidget、QDialog。

qq_45262721的博客 3475

基于QT(C++)实现的坦克大战

该游戏总共有35关,每关有20个敌方坦克,玩家每关3条命,因为是在个人电脑上玩所以仅实现了单人游戏击败20个敌人自动进入下一关,通过35关游戏胜利,当生命数为0或大本营被击中游戏失败玩家坦克由键盘W、S、A、D键控制移动方向,J键发射子弹,敌方坦克则自动控制我们的全局参数主要是枚举类型方向,地图数组,图像的单位尺寸,窗口长和宽用一个config.h头文件来设置这些全局参数,并由其他类进行include在动手写程序之前,要在脑中有清晰的思路。想要程序去做什么(1) 首先自己要明确自己想做什么。

神仙别闹的自留地 1254

QT(C++)面试总结

参考博客 QT信号槽机制的优缺点 (1)问题: 为什么Qt使用信号与槽机制而不是传统的回调函数机制进行对象间的通信呢? 回调函数的本质是“你想让别人的代码执行你的代码,而别人的代码你又不能动”这种需求下产生的。 回调函数是函数指针的一种用法,如果多个类都关注某个类的状态变化,此时需要维护一个列表,以存放多个回调函数的地址。对于每一个被关注的类,都需要做类似的工作,因此这种做法效率低,不灵活。 (2)解决办法 Qt使用信号与槽机制来解决这个问题,程序员只需要指定一个类含有哪些信号函数、哪些槽函数,Qt会处理信

qq_40433783的博客 2万+

VS2019+QT(C++)调用C#的dll

由于Windows10的QT5.15项目需要与新代数控系统做数据交换,一开始打算尝试用OPC UA的,哪知收费价格死贵,新代的销售也是藏着掖着的,不得已另寻它径,然后发现了C#的dll,奈何没有C++版本,只有C#版本。C++编写的程序为非托管代码,C#编写的程序为托管代码。非托管代码调用托管代码的DLL不只有一种方式,本文采用了CLR的方式。说明:Qt是不能直接调用C#生成的dll,需要将C#的编写的dll通过CLR编译成libCLR相当于给C# dll文件套了一层C++认识的壳。

weixin_49607313的博客 2142

12、Qt5与GTK4框架基础入门

本文介绍了Qt5与GTK4两个用于X Window System客户端应用程序开发的框架。Qt5基于C++,提供信号和槽机制,支持丰富的GUI开发;GTK4使用C语言,作为中间层工具包简化X协议交互。文章涵盖框架安装、基础示例、信号与槽机制、观察者模式实现及简单小部件创建,并给出学习建议,帮助开发者快速入门GUI应用开发。

n7o8p的博客 94

Qt学习之Qt基础入门(上)

Qt语法 基础入门 槽函数 创建项目 文件

RongLin02的博客 1万+

Qt(C++)五子棋游戏(源代码)

QT做的五子棋游戏, 完成了AI人机玩法, 真人对弈, 查看对局记录, 和键盘输入捕获等功能

qq_63650573的博客 2192

QT(C++)游戏之坦克大战(二)

前言 上篇博客讲了整体的一个框架,这次来说一下界面设计,地图的实现,以及玩家坦克的移动。 实现 界面大小设计 根据从手机上获取的截屏,自己在根据一定的比换算,最终确定了整个界面的大小为1280x960。整个界面如果按大块来算的话是13x13的规格。其他的相关参数见表(这些参数是经历过好几次修改,最终确定下来的,废了不少的时间): 宏定义 说明 SIZE_WIDTH 1280 整个界...

CSDN-ZCL 4919

[软考]系统架构设计师 备考经验分享(一) - 备考计划篇

前言 上周末刚刚结束了软考架构师的考试,自我感觉考的还可以,大概率是过了。 两次参加软考,一次中级嵌入式,一次高级架构师,都是备考不到两个月时间,尤其是架构师这次考试内容和本职工作有不小的差别,并且需要同时备考三个科目,在高强度地备考中感觉是摸索出到了一点软考的技巧与经验。 打算趁还记得,赶紧写几篇文章做下梳理总结,算是给将来自己考系分、高项或者其他考试做个记录,也希望能够帮到正在备考的大家。 先把第一步,个人的备考计划分享给大家。 自身情况分析 首先,请大家一定先明确三个问题,这三个问题会直接影响到你的

_ 6392

SICK LMS111激光雷达数据解析实战:从原始帧到三维点云的完整流程

本文详细解析了SICK LMS111激光雷达从原始数据帧到三维点云的完整处理流程,包括数据帧结构解析、坐标转换、点云可视化及性能优化技巧。通过实战代码示例,展示了如何高效处理激光雷达数据,并应用于动态物体检测、地面分割等工业场景,为AGV和服务机器人开发者提供实用指南。

garlic的博客 764

QT(C++)游戏之坦克大战(五)

前言 这篇博客再来归纳一下整个项目的结构。 首先完整的代码已经整理好了,可执行文件下载链接: 源代码下载链接: 最新的代码会更新在Github上: 消息传递 下面以玩家类与普通敌人类的数据共享来说明,简单画了个草图: 小工具 大家打开源代码,在MyMap.cpp中可能会发现有这么一段代码: 这段代码整整写了两百多行,还有下面的第二关,都是两百多行。 static void stage1...

CSDN-ZCL 3916

乐鑫ESP32-C6产测全流程:RAM固件测试与阈值校准实战指南

Wi-Fi模组量产测试是保障IoT设备射频性能与硬件可靠性的关键环节,其核心在于基于RAM的无损固件加载、可配置的阈值判定机制及多工位协同控制。该流程依托串口协议与结构化配置(如JSON阈值文件、.bin测试固件),实现RF性能(fb_rssi、tx_power)、GPIO导通性、Flash ID识别与固件版本校验等原子化测试项的自动化执行。技术价值体现在避免Flash擦写风险、支持动态温补与在线学习校准,并无缝对接MES系统实现质量数据闭环。典型应用场景包括ESP32-C6/C3/S2等乐鑫全系Wi-Fi

weixin_35756690的博客 298

QT入门基础知识总结

Qt 是原生应用开发框架,通过 C++ 直接操作操作系统和硬件,适合高性能、深度定制的界面;前端是Web 生态的界面层,依赖浏览器或容器,适合快速迭代、跨平台部署的轻量级应用。二者虽都涉及界面交互,但技术路径和适用场景截然不同,选择取决于具体需求:若需开发桌面软件、嵌入式系统或高性能应用,选 Qt;若需开发网站、小程序或跨平台 Web 应用,选前端技术栈。

qq_28576837的博客 1690

【Unity】制作简易三维场景

本文介绍如何制作一个三维场景

CiNian_的博客 5326

空天大模型详解

空天大模型是指面向空天信息领域(如卫星遥感、导航、气象等)设计的多模态人工智能模型,能够处理海量遥感数据、多传感器信息及跨时空分析任务。多模态融合:整合可见光、雷达、热红外、多光谱等多源遥感数据,构建统一表征空间,例如“空天·灵眸”3.0版支持航空、卫星及无人机数据的自动化解译。轻量化与高效推理:针对星载计算场景,采用分层量化、跨模态蒸馏技术压缩模型参数(如JigonGPT从1.02B压缩至0.23B,性能仅牺牲5.2%)18,并通过热传导架构提升计算速度2.4倍。神经符号结合。

zxy98的专栏 1556

探索QT(C++)权限管理平台源码:功能与实现

QT(C++)权限管理平台源码功能说明:包括?用户管理、角色管理、角色权限管理、菜单管理 、日志管理?等功能。开发工具:QT 5.14.2 +MYSQL57??运行平台:Windows、Linux、MacOS开发文档?:数据库字典,源码说明。最近研究了一个基于QT(C++) 的权限管理平台源码,感觉还挺有意思,跟大家分享分享。

CRzkHbaXTmHw的博客 1542

鸿蒙ArkUI内部API10以及11开发,输入框唤起输入法键盘,页面会被顶起的解决办法

鸿蒙ArkUI内部API10以及11开发,输入框唤起输入法键盘,页面会被顶起的解决办法

zmx781284440的博客 3211

QT (C++)安装5.14

QT C++的安装

杨海华的博客 5836

结构力学仿真软件:STAAD.Pro:结构抗震设计与STAAD.Pro应用_2024-08-10_11-49-29.Tex

STAAD.Pro是一款广泛应用于结构工程领域的仿真软件,由Bentley Systems开发。它能够进行结构分析和设计,支持多种结构类型,包括桥梁、建筑物、塔架等。STAAD.Pro提供了强大的建模工具,用户可以轻松创建复杂的结构模型,并进行静态和动态分析。软件还支持多种载荷组合,包括地震载荷,以及提供详细的报告和图纸输出,便于工程师进行设计和审查。STAAD.Pro是一款广泛应用于结构工程设计的软件,其界面直观,功能强大,能够进行结构分析与设计。菜单栏。

964

39、低功耗处理器性能评估与Cortex - M23/M33低功耗特性解析

本文深入解析了Cortex-M23和Cortex-M33处理器的低功耗特性及其性能评估方法。介绍了ULPMark、CoreMark、IoTMark-BLE和SecureMark-TLS等基准测试在能效评估中的应用,并详细阐述了处理器的睡眠模式、系统控制寄存器(SCR)配置、WFI/WFE指令、退出时睡眠、挂起时发送事件(SEVONPEND)以及唤醒中断控制器(WIC)等关键低功耗机制。结合状态保留技术,展示了如何通过芯片级设计大幅降低泄漏电流,实现高效能低功耗的物联网与嵌入式系统设计。

Pepper的专栏 123
上一篇: centOS7 安装 ffmpeg
下一篇: Docker中安装Ubuntu镜像 出现命令无法找到错误
傻瓜搬砖人
博客等级 码龄7年 187粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值