自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (5)
  • 收藏
  • 关注

原创 QT模态对话框的两种方式和区别

QT模态对话框的两种方式和区别

2023-02-01 11:24:38 540

原创 c++11 简化、规范书写单例模式

单例模式在项目是最常用的设计模式之一,一个稍大点的项目,往往有很多类使用了单例模式,所以掌握单例模式至关重要。但是看过太多项目中使用的单例模式并不规范,只是简单的将默认构造函数私有化然后提供一个静态成员函数获取对象。其存在两大问题:1、不私有化拷贝构造函数和赋值运算符,更有甚者,自己还在代码中使用了拷贝构造函数或者赋值运算符,单例变多例,如 A a = A::instance();。不理解 单例 为何意。2、不考虑创建对象时线程安全问题。如: 为了解决上述两个问题,在写单例模式时,需要将

2022-07-05 16:17:27 427

原创 MySQL调优思路

影响范围由小到大:1、优化SQL语句,使用高效的SQL语句2、优化表结构的设计,如添加恰当的索引、使用恰当的数据类型、尽可能的把字段设置成NOT NULL等3、优化数据库参数配置,如查询缓存等...

2022-04-07 18:15:43 663

原创 QMap遍历删除元素

容器的遍历删除,很多新手都很容易出现bug。记录,以便自己查找: QMap<int, int> mapTest{{1, 1}, {2, 2}, {3, 3}, {4, 4}}; //Java风格 QMutableMapIterator<int, int> it(mapTest); //QMapIterator为只读的,所以用QMutableMapIterator while (it.hasNext()) { auto

2021-12-01 17:30:20 1859

原创 C++使用模板函数实现工厂模式功能

工厂模式属于创建型模式,根据不同的参数创建不同的对象,大致如下://基类class Phone{};//子类class XiaomiPhone : public Phone{};//子类class VivoPhone : public Phone{};//工厂class PhoneFactor{public: Phone* makePhone(int phoneType) { if(phoneType == XIAO_MI)

2021-12-01 16:45:44 323

原创 深入理解QTimer::singleShot的参数,及使用时需要注意的点

singleShot有很多重载函数,各有自己的使用场景,使用不当,容易导致奔溃或者达不到预期。1、时间精度:查看源码可知,调用的时候若没有传入Qt::TimerType参数,则设置的超时时间小于等于2000ms时,使用精度更高的时钟类型:Qt::PreciseTimer,否则使用精度次高的Qt::CoarseTimer。2、不恰当使用lambda表达式导致奔溃如下为singleShot使用lambda的两种常用方式,区别在于第二个参数,为了访问类成员,lambda都捕获this指

2021-11-24 16:29:44 13457 1

原创 QSet的坑

std::set内部会自动对元素进行大小排序,而QSet不会,因为QSet内部使用的是哈希表,而std::set用的是红黑树。请看:

2021-11-22 15:05:28 1646

原创 Inno Setup 安装启动MySQL8.0服务关键脚本

//初始化MySQL WizardForm.StatusLabel.Caption := 'initializing server...'; ShellExec('open', ExpandConstant('{app}\...\MySQL\bin\mysqld.exe'), '--initialize-insecure --console', ExpandConstant('{app}\...\MySQL\bin\'), SW_HIDE, ewWaitU...

2021-11-12 11:05:58 884

原创 QTableWidget、QTableView单元格设置不可编辑的几种方法及使用场景

1、设置所有单元格都不可编辑1)在代码里设置:setEditTriggers(QAbstractItemView::NoEditTriggers);2)在控件的属性中设置。2、设置某行或者某列不可编辑,其他行列可编辑1)继承类QStyledItemDelegate,重写函数createEditor,让其返回空,(单元格较多时推荐使用)QWidget* ReadOnlyItemDelegate::createEditor(QWidget* parent, const QStyleOpti

2021-11-12 10:34:36 15809 3

原创 QTableWidget、QTableView表格设置输入限制0到255、0到128

项目需求:表格里某些行/列要求限制用户只能输入0到255之间的数字,某些行/列限制只能输入0到128实现:通过自定义代理类的方式。继承QStyledItemDelegate(不会导致QSS失效)或者QItemDelegate(会导致QSS失效),官方推荐继承QStyledItemDelegate头文件:#ifndef CUSTOMITEMDELEGRATE_H#define CUSTOMITEMDELEGRATE_H#include <QWidget>#includ

2021-11-03 17:38:19 7708 6

原创 QT两种方式读写XML文件的区别

两种方式:1)QDomElement ,该类的API使用类似开源的pugixml2)QXmlStreamReader &QXmlStreamWriter读:QDomElement是将整个 XML 文件读入内存,构建成一个树结构;而QXmlStreamReader是基于流的方式访问XML 文件。基于上述,若计算机的内存较小而xml文件较大时,推荐使用QXmlStreamReader方式。写:QDomElement写xml文件时,元素属性的顺序时......

2021-10-11 12:06:32 1016

原创 QTableView 不使用自定义委托的方式实现单元格添加下拉框 QComboBox

效果图:实现:1)继承代理类,实现自定义代理,网上很多教程,这里不在赘叙;2)使用接口:void QAbstractItemView::setIndexWidget(const QModelIndex &index, QWidget *widget)代码如下,注意 ui->tableView->setModel(model); 必须在model添加数据之前才有效Widget::Widget(QWidget *parent) : QWidget(par..

2021-09-30 14:03:31 1914 3

原创 QT在多线程中正确使用数据库MySQL

问题:很多QT新手多线程使用数据库时,经常遇到警告:QSqlDatabasePrivate::database: requested database does not belong to the calling thread.究其原因,帮助助手明确说明Threads and the SQL ModuleA connection can only be used from within the thread that created it. Moving connections bet

2021-09-29 17:50:48 4038 1

原创 QWT自定义坐标轴标签及同一条曲线显示多种形状样本点

一:先上效果图,横轴纵轴可以根据需求显示任意文本,每个样本点也可以显示成任意形状二:横纵轴显示任意文本实现:QwtPlot类提供如下函数,用于设置坐标轴文本显示。void setAxisScaleDraw( int axisId, QwtScaleDraw * );所以通过继承QwtScaleDraw类,重写下面的虚函数,按照自定义的规则返回文本。virtual QwtText label(double v) const;具体实现,将坐标轴的文本放到list里,挨...

2021-09-29 11:44:30 2138 8

原创 QEventLoop的高阶使用——在UI线程使用时过滤用户输入事件

在网络编程中,往往有这种需求,给服务器发送命令1,然后等待服务器应答命令1,然后根据应答的结果判断是否需要发送命令2,命令3.....要求不卡顿界面。伪代码://发送命令1syncSendData(command_1); //向服务器发送command_1//命令1收到服务器的应答,发送命令2syncSendData(command_2);//命令2收到服务器的应答,发送命令3syncSendData(command_3); . ...

2021-09-08 21:07:49 3234

原创 QT在子线程中正确使用定时器QTimer,及IO类的对象跨线程调用问题

需求:在子线程中定时执行任务,要求不受主线程(UI线程)卡顿的影响需求解读:因为主线程操作UI或者读取数据库较慢时容易导致卡顿,如果QTimer的timeout信号是放在主线程发送,则遇到主线程卡顿时,timeout信号未能及时发出,导致timeout信号绑定的槽函数不能在预定的时间间隔下执行,所以只能在子线程中发送timeout信号,这就要求QTimer的对象需要在子线程中。...

2021-09-08 18:33:45 8530 5

DirectShow开发指南

DirectShow开发指南适合想学DirectShow的新手们,讲的很详细,例子很好

2014-07-23

ATL开发指南

ATL入门教程,COM技术开发,适合window下的程序员

2014-07-10

单幅图像暗通道去雾增强

图像去雾有关算法的详解及实现、可供借鉴、很好的论文

2014-04-18

暗通道先验图像去雾程序

暗通道先验图像去雾程序

2014-04-18

基于android的俄罗斯方块的设计与实现

在android平台上开发俄罗斯方块游戏,包括实现的的原理、架构、过程,适合大学生课程设计的学习。

2013-11-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除