- 博客(52)
- 资源 (11)
- 收藏
- 关注
原创 Windows10下的TEB和PEB的分析
TEB:线程环境块(Thread Environment Block),PEB是进程环境块(Process Environment Block)。
2022-11-15 10:48:53
1804
原创 Qt实现一个小工具 - 批量处理文件夹内文件名称追加或删除
核心代码实现如下(递归实现):void Widget::Recursion(const QString& strPath){ QList<QString> stDir; QString strName; if( strPath.isEmpty() ) { return; } QDir dir(strPath); QFileInfoList fInfoList = dir.entr
2022-03-10 20:09:57
544
原创 QDesktopServices常用用法 - 打开外部网页或文件(夹)
许多桌面环境提供的服务可供应用程序用于执行常见任务,例如打开网页,其方式既一致又考虑到用户的应用程序偏好。此类包含为这些服务提供简单接口的函数,这些接口指示它们是成功还是失败。openUrl() 函数用于打开位于外部应用程序中任意 URL 的文件。 对于与本地文件系统上的资源对应的 URL(其中 URL 方案为“文件”),将使用合适的应用程序打开文件; 否则,将使用 Web 浏览器来获取和显示文件。用户的桌面设置控制是否打开某些可执行文件类型进行浏览,或者是否执行它们。 一些桌面环境被配置为阻止用户执
2022-03-10 19:46:25
1737
原创 冒泡排序(C++版)
template <typename T> static void Bubble(T array[], int len, bool min2max = true) { bool Exchange = true; for(int i=0; (i<len) && Exchange; i++) { Exchange = false; .
2022-02-25 22:29:46
488
原创 插入排序法(C++版)
template <typename T> static void Insert(T array[], int len, bool min2max = true) { for(int i=1; i<len; i++) { T e = array[i]; int k = i; for(int j=i-1; (j>=0) &&.
2022-02-25 07:52:52
448
原创 选择排序法(C++版)
//选择排序法 template <typename T> static void Select(T array[], int len, bool min2max = true) { for(int i=0; i<len; i++) { int min = i; for(int j=i+1; j<len; j++) { .
2022-02-24 23:57:32
507
原创 字符串匹配算法KMP
生成部分匹配表 //生成子串的部分匹配表int* make_pmt(const char* p){ int len = strlen(p); int* ret = static_cast<int*>(malloc(sizeof(int) * len)); if( ret != nullptr ) { int ll = 0; ret[0] = 0; for(int i=1; ...
2022-02-24 23:45:15
224
原创 字符串拷贝函数strdup()
char *strdup(const char *s); 注:strdup()函数是c语言中常用的一种字符串拷贝库函数,一般和free()函数成对出现。字符串拷贝函数strdup()内部实现如下:char* __strdup(const char* s){ size_t len = strlen(s) + 1; void* ret = malloc(len); if(ret==nullptr) { return nullptr...
2022-02-16 23:30:26
717
原创 MySQL常用操作
1. 创建数据库和删除数据库--创建create database db_name;--删除drop database db_name;2. 显示数据库和使用数据库--显示数据库show databases;--使用数据库use db_name;3. 显示某个数据库中有几种表--显示几种表show tables;4. 下面主要讲解查询select,其它的比如更新update、插入insert、删除delete不讲解。a. 查询数据b. 条件查询.
2022-02-14 20:11:12
358
原创 MySQL安装教程
百度搜索mysql ,进入官网,按照如下图选择:然后选择MySQL Community Server,点击下载,如图所示:把压缩包解压到E盘中mysql文件夹中,设置环境变量,如图所示:以管理员权限启动cmd,执行如下命令:1.初始化命令并记住密码:mysqld --initialize --console2. 安装: mysqld install3. 启动服务:net start mysql4. 登录: mysql -uroot -p5. 修改密码:alte..
2022-02-12 20:24:24
609
原创 net start mysql 出现发生系统错误 2 解决方法
第一步:先进入mysql文件夹中bin里第二步:mysqld remove第三步:mysqld install第四步:net start mysql截图:
2022-02-12 20:05:15
3362
3
原创 QProgressDialog使用方法
#ifndef WIDGET_H#define WIDGET_H#include <QtWidgets/QWidget>#include <QProgressDialog>#include <QTimer>#include <QDebug>#include <QPushButton>class Widget : public QWidget{ Q_OBJECT QPushButton m_testBt.
2021-12-17 22:01:55
1923
2
原创 QStackedWidget和QTabBar组合使用方法
#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QStackedWidget>#include <QTabBar>#include <QLabel>#include <QDebug>#include <QString>#include <QTextEdit>#include <QVBoxLayout>#include .
2021-12-17 15:10:03
528
原创 QStackedWidget和QListWidget组合使用方法
QStackedWidget 类提供了一堆小部件,其中一次只能看到一个小部件。QStackedWidget 可用于创建类似于 QTabWidget 提供的用户界面。 它是一个构建在 QStackedLayout 类之上的便捷布局小部件。#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QStackedWidget>#include <QLabel>#include <QDebu
2021-12-17 14:16:13
1197
原创 QSplitter使用方法
#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QSplitter>#include <QTextEdit>#include <QPlainTextEdit>#include <QPushButton>class Widget : public QWidget{ Q_OBJECT QSplitter m_MainSplitter; .
2021-12-17 10:03:30
169
原创 Qt常用容器遍历 - QList和QMap
QList遍历 QList<int> list; list << 1 << 2 << 3 << 4 << 5; qDebug() << "QList第一种遍历"; QList<int>::iterator it1 = list.begin(); for(; it1!=list.end(); ++it1) { qDe.
2021-12-16 20:26:15
8700
1
原创 C中十六进制字符串转十六进制数组
第一种方法:void Hexstr2ByteArray(){ char* str = "24240a0030104F550D0A"; int i = 0; char buf[256] = {0}; int j = 0; while(str[i]!=0) { sscanf(str+i, "%02X", buf+j); i+=2; j+=1; }}运行结果:第二种方法:char..
2021-12-07 09:22:47
1987
原创 Qt - 多线程与界面组件的通信
先上代码:#ifndef MYTHREAD_H#define MYTHREAD_H#include <QThread>#include <QtCore/QObject>class MyThread : public QThread{ Q_OBJECTsignals: void uiSignal(QString msg); protected: void run(); public: explicit MyThread(
2021-12-01 20:47:37
532
原创 Qt中release打包发行命令windeployqt使用方法
把release版本编译生成的XXX.exe,单独放在一个新建一个文件夹,然后打开QT的命令终端Qt 5.12.12 (MinGW 7.3.0 32-bit),使用cd命令进入到新建的文件夹路径
2021-12-01 15:30:21
994
原创 Qt - 另一种创建线程的方法
#ifndef ANOTHERTHREAD_H#define ANOTHERTHREAD_H#include <QObject>#include <QThread>class AnotherThread : public QObject{ Q_OBJECT QThread m_thread;protected slots: void tmain();public: explicit AnotherThread(QObject *p.
2021-11-28 13:16:14
144
原创 Qt - 线程的生命周期问题
工程设计准则线程对象的生命周期 > 对应的线程生命周期同步型线程设计#ifndef SYNCTHREAD_H#define SYNCTHREAD_H#include <QThread>class SyncThread : public QThread{ Q_OBJECTprotected: void run();public: explicit SyncThread(QObject *parent =...
2021-11-28 10:34:32
596
原创 Qt - 信号与槽的连接方式
信号与槽的连接方式主要有以下5种方式:先看代码:#ifndef MYOBJECT_H#define MYOBJECT_H#include <QObject>class MyObject : public QObject{ Q_OBJECTpublic: explicit MyObject(QObject *parent = 0); signals: protected slots: void testSlot();}.
2021-11-27 23:45:22
1586
原创 Qt - 多线程中的信号与槽
先看代码和运行效果图,如下:#ifndef MYOBJECT_H#define MYOBJECT_H#include <QObject>class MyObject : public QObject{ Q_OBJECTpublic: explicit MyObject(QObject *parent = 0); protected slots: void getStarted(); void testSlot();};#end
2021-11-27 22:22:50
748
原创 Qt中银行家算法实现 - 多线程应用
算法策略 将资金优先借予资金需求较少的客户 应用场景 操作系统内核中的进程管理 数据库内核中的频繁事物管理 Qt中的算法实现方案 使用多线程机制模拟客户和银行 银行优先分配资源给最小需求的客户 当客户的资源需求无法满足的时候 收回已分配的资源 强制结束线程 代码实现:#include <QCoreApplication>#include <QThread>#include <QMutex>#include <
2021-11-25 23:55:16
497
原创 汽车诊断协议 - KWP2000
KWP2000协议是最常用的通信协议之一,是属于OBDII标准协议的一种。KWP系统又称为关键字协议,因为这种协议在系统进入时,会涉及到关键字的校验而得名。下面从物理层特性、系统进入、帧结构等几个方面来介绍这种协议。物理层特性:通常采用10416BPS的波特率;空闲电平通常为12V;数据位格式为1+8+1,没有校验位。系统进入初始化:有两种初始化方式。第一种由设备先发送25ms的拉低电平,然后是25ms的高电平(空闲电平),然后再发送系统进入数据,系统进入数据通常为5个字节,ECU响应7个字节,完成系统
2021-11-16 19:44:56
1743
转载 汽车诊断协议 - CAN BUS协议
物理层特性:可分为单线CAN协议和双线CAN协议。单线CAN协议目前主要出现在GM车系里面,1号脚通讯,波特率为33.3K。双线CAN协议常见的波特率有500K(6/14)、250K(6/14)和125K(3/11),括号内为通讯脚位。单、双线CAN协议的命令交互格式基本一致。CAN-BUS通讯需要一个120欧的电阻。...
2021-11-16 19:29:23
2007
原创 QPainter使用总结
void Widget::paintEvent(QPaintEvent* event){ Q_UNUSED(event); //第一种 QPainter painter1(this); painter1.save();//保存绘制状态 painter1.setPen(Qt::blue); painter1.drawLine(QPoint(10, 10), QPoint(20, 20)); painter1.restore();/.
2021-11-08 20:28:05
148
原创 QPainter文本绘制
效果图:源码:#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QPainter>#include <QFontMetrics>#include <QPen>#include <QFont>#include <QTimer>class Widget : public QWidget{ Q_OBJECT uns.
2021-11-08 20:22:45
389
原创 QImage和QPixmap的使用
QImage 是为 I/O 以及直接像素访问和操作而设计和优化的,而 QPixmap 是为在屏幕上显示图像而设计和优化的。源码分享:void Widget::OnloadClicked(){ QFileDialog dialog(this); dialog.setAcceptMode(QFileDialog::AcceptOpen); dialog.setFileMode(QFileDialog::ExistingFile); if(..
2021-11-07 10:13:27
516
原创 简易图形绘制
源码分析int Widget::drawType(){ int ret = NONE; if(m_freeBtn.isChecked()) ret = FREE; if(m_lineBtn.isChecked()) ret = LINE; if(m_rectBtn.isChecked()) ret = RECT; if(m_ellipseBtn.isChecked()) ret = ELLIPSE; retu...
2021-11-07 08:16:26
71
原创 Qt基础图形绘制2
世界坐标:也叫逻辑坐标,使用的单位叫做逻辑单位,是人类世界中的坐标,如北京在地图中的坐标为(700km,899km)。这种坐标系统可大可小,大可至几万千米,小至几毫米,随你设置,该系统中坐标大小与显示设备大小无关。一般来说,逻辑坐标系在左下角,正X轴向又,正Y轴向上。窗口坐标:窗口坐标和世界坐标其实没有太大区别,都使用逻辑坐标进行表示。只是世界坐标和窗口坐标之间可能会存在一些变换,如平移、缩放、旋转、扭曲。设备坐标:也叫物理坐标,原点在左上角,正X轴向右,正Y轴向下,显示器中,坐标单位通常为像素,.
2021-11-04 07:33:39
566
原创 Qt基础图形绘制1
QPainter 类在小部件和其他绘画设备上执行低级绘画。QPainter 提供高度优化的功能来完成大多数绘图 GUI 程序所需的工作。 它可以绘制从简单线条到复杂形状(如馅饼和和弦)的所有内容。 它还可以绘制对齐的文本和像素图。 通常,它在“自然”坐标系中绘制,但它也可以进行视图和世界变换。 QPainter 可以对任何继承 QPaintDevice 类的对象进行操作。画家由 begin() 函数和接受 QPaintDevice 参数的构造函数激活。 end() 函数和析构函数将其停用。当pain.
2021-11-03 23:09:40
148
原创 Qt模型视图中委托深入分析
项目一:源码分析:void CustomizedItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const{ if(2 == index.column()) { const int Delta = 4; int x = option.rect.x() + Delta;
2021-10-31 10:09:14
285
原创 模型视图中的委托
QAbstractItemDelegate 类用于显示和编辑模型中的数据项。QAbstractItemDelegate 为模型/视图架构中的委托提供接口和通用功能。 委托在视图中显示单个项目,并处理模型数据的编辑。QAbstractItemDelegate 类是模型/视图类之一,是 Qt 模型/视图框架的一部分。要以自定义方式呈现项目,您必须实现paint() 和sizeHint()。 QItemDelegate 类为这些函数提供了默认实现; 如果您不需要自定义渲染,请改为对该类进行子类化。..
2021-10-30 21:09:10
115
原创 Qt模型视图 - 自定义模型类
创建个人信息类:#ifndef PERSONINFOMODEL_H#define PERSONINFOMODEL_H#include <QObject>#include <PersonInfo.h>#include <QList>#include <QTableView>#include <QStandardItemModel>#include <QStandardItem>class PersonInfoMo
2021-10-24 21:52:35
1455
原创 Qt中QFileSystemModel例子
QFileSystemModel 类为本地文件系统提供数据模型。此类提供对本地文件系统的访问,提供重命名和删除文件和目录以及创建新目录的功能。 在最简单的情况下,它可以与合适的显示小部件一起使用,作为浏览器或过滤器的一部分。源码:#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QFileSystemModel>#include <QTreeView>#include &l.
2021-10-24 16:03:22
1380
原创 Qt中QGridLayout使用方法
QGridLayout 类在网格中布置小部件。QGridLayout 获取可用的空间(通过其父布局或 parentWidget()),将其划分为行和列,并将其管理的每个小部件放入正确的单元格中。列和行的行为相同;我们将讨论列,但行也有等价的函数。每列都有一个最小宽度和一个拉伸因子。最小宽度是使用 setColumnMinimumWidth() 设置的最大宽度和该列中每个小部件的最小宽度。拉伸因子使用 setColumnStretch() 设置,并确定列将获得多少可用空间超过其必要的最小值。通常,使用
2021-10-23 09:30:44
7669
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人