自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

斧冰

千淘万漉虽辛苦,吹尽狂沙始到金。

  • 博客(277)
  • 资源 (6)
  • 收藏
  • 关注

原创 vs2017编译Assimp

一、安装DirectX SDKDirectX SDK下载地址安装 DirectX SDK 时出现"S1023"错误解决方案:若要解决此问题,必须在安装 2010 年 6 月 DirectX SDK 之前卸载 Visual C++ 2010 可再发行组件的所有版本。 您可能已安装以下一个或多个产品:Microsoft Visual C++ 2010 x86 可再发行组件Microsoft Visual C++ 2010 x64 可再发行组件包括比Microsoft Visual C++ 20

2021-03-29 23:43:03 856

原创 godot 淡入淡出平滑切换场景

godot新建一个空工程根节点重命名为scene1然后添加一个TextureRect节点,添加一张背景图1.jpg(网上下载的,你也可以替换成自己喜欢的背景图)再添加一个Button控件,里面的文字输入“start”,按钮放置在右上角。保存场景scene1给场景添加一个gd脚本:然后给按钮添加一个pressed的点击函数:将场景scene1.tscn复制一份,改为scene2.tscn,替换scene2的背景图片为1.jpg,这样你就有了2个场景,接下来我们要做的就是在这两个场景之间

2021-02-19 10:24:10 3951 1

转载 Godot基础教程01:实例-控制大炮

Godot基础教程01:实例-控制大炮本节将讲解如何做一个简单的实例:用方向键左右控制大炮左右移动用方向键上下控制大炮炮口方向用空格键发射炮弹大概就是这个效果:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T9puPWyu-1611481146972)(./images/2.gif)]素材准备我自己用ps抠图,把图片抠出来,放到resources文件夹中:分别是大炮的架子,用方块代替一下,炮管和炮弹。场景布置说明Node2D : 根节点,

2021-01-24 17:48:21 1654

原创 关于QJson能解析的最大数据长度的源码分析

关于QJson能解析的最大数据长度的源码分析最近在使用QJson的时候,发现在60Mb+不到70Mb的时候,就会解析失败。我们看看Qt中有没有对QJson能解析的数据长度的限制。在文件Qt\Qt5.14.2\5.14.2\Src\qtbase\src\corelib\serialization\qjsondocument.cpp第392-396行QJsonDocument QJsonDocument::fromJson(const QByteArray &json, QJsonParseEr

2021-01-21 18:19:35 2498 4

原创 编译出带加密功能的 SQLite Qt 插件并用SQLiteStudio进行查看

编译出带加密功能的 SQLite Qt 插件并且用SQLiteStudio查看加密后的数据库博客地址:https://www.devbean.net/2012/07/qt-sqlite-plugin-with-encryption/github地址:https://github.com/devbean/QtCipherSqlitePlugin截止2021年1月,QtCipherSqlitePlugin的最新release版本是v1.3基于wxSqlite4.5.1在Qt中编译QtCipherSql

2021-01-20 20:48:53 1972 1

原创 Qt+Cef3离屏渲染(二)

还是以windows上vs2017 release版本运行的程序为例。接上一篇,我们只是将离屏渲染的每一帧图片QImage,以异步事件的方法发送到了目标QWiget上,然后再将QImage绘制到屏幕上。留下了一些待处理的问题:滚轮事件鼠标的点击事件鼠标hover到链接上,鼠标形状的变化键盘输入输入框的右键弹出层我们这篇博客就围绕这些问题进行处理。一、离屏渲染的滚轮事件的处理滚轮事件的处理最为简单。在CefOSRWidget头文件中:protected: //其余代码与前面一篇相

2020-12-19 10:34:43 2668 5

原创 Qt+Cef3离屏渲染(一)

离屏渲染(Off-Screen Rendering)在离屏渲染模式下,CEF不会创建原生浏览器窗口。CEF为宿主程序提供无效的区域和像素缓存区,而宿主程序负责通知鼠标键盘以及焦点事件给CEF。离屏渲染目前不支持混合加速,所以性能上可能无法和非离屏渲染相比。离屏浏览器将收到和窗口浏览器同样的事件通知,下面介绍如何使用离屏渲染:(1)实现CefRenderHandler接口。除非特别说明,所有的方法都需要覆写。调用CefWindowInfo::SetAsOffScreen(),将CefWindowInf

2020-12-19 10:34:32 7406 19

转载 Linux进程间通信——信号集函数

我们已经知道,我们可以通过信号来终止进程,也可以通过信号来在进程间进行通信,程序也可以通过指定信号的关联处理函数来改变信号的默认处理方式,也可以屏蔽某些信号,使其不能传递给进程。那么我们应该如何设定我们需要处理的信号,我们不需要处理哪些信号等问题呢?信号集函数就是帮助我们解决这些问题的。有关Linux进程间使用信号通信的更多内容,可以参阅我的另一篇文章—— Linux进程间通信——使用信号下面是信号函数集:1、int sigemptyset(sigset_t *set);该函数的作用是将信号集初始

2020-12-15 21:02:03 157

转载 Linux SIGQUIT 捕获

test.c#include <stdio.h>#include <signal.h>void quit_handler();int main(int argc, char ** argv){ sigset( SIGQUIT, quit_handler ); printf( "Process_pid=[%d]\n", getpid() ); while(1); return 0;}void quit_handler(){

2020-12-15 20:49:29 391

转载 关于获取时间戳函数gettimeofday的用法小结

Linux下gettimeofday函数函数头文件及原型为:#include<sys/time.h>int gettimeofday(struct timeval*tv,struct timezone *tz )参数:struct timeval{ long tv_sec;/*秒*/ long tv_usec;/*微妙*/};struct timezone{ int tz_minuteswest;/*和greenwich时

2020-12-12 17:50:09 1465

转载 pthread_key_t和pthread_key_create()详解

下面说一下线程中特有的线程存储, Thread Specific Data 。线程存储有什么用了?他是什么意思了?大家都知道,在多线程程序中,所有线程共享程序中的变量。现在有一全局变量,所有线程都可以使用它,改变它的值。而如果每个线程希望能单独拥有它,那么就需要使用线程存储了。表面上看起来这是一个全局变量,所有线程都可以使用它,而它的值在每一个线程中又是单独存储的。这就是线程存储的意义。下面说一下线程存储的具体用法。创建一个类型为 pthread_key_t 类型的变量。调用 pthread_

2020-12-09 10:56:41 527

原创 skynet源码——main函数

skynet版本ad06d232a6e54179d1615241b273bc18ab08805c为例,对源码进行阅读。在skynet-src/skynet_main.c中有int main(int argc, char *argv[]) { const char * config_file = NULL ; if (argc > 1) { config_file = argv[1]; } else { fprintf(stderr, "Need a config file. Ple

2020-12-05 20:38:53 250

转载 linux中fork()函数详解

转自:https://blog.csdn.net/jason314/article/details/5640969一、fork入门知识一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于

2020-12-05 12:44:21 562

原创 CMake中函数参数问题

CMake中function函数的定义:function(<name> [arg1 [arg2 [arg3 ...]]]) COMMAND1(ARGS ...) # 命令语句 COMMAND2(ARGS ...) ...function()函数就是使用变量,在命令中途可以对改变量进行修改例一:cmake_minimum_required(VERSION 3.5)set(var "ABC")function(Foo arg) message

2020-12-04 10:01:43 2189

原创 cmake中宏中set参数的问题解惑

先看一下关键字:cmake的宏是MACRO,用法:macro(<name> [arg1 [arg2 [arg3 ...]]]) COMMAND1(ARGS ...) # 命令语句 COMMAND2(ARGS ...) ...endmacro()定义一个名称为name的宏(函数),arg1...是传入的参数。我们除了可以用${arg1}来引用变量以外,系统为我们提供了一些特殊的变量:变量说明argv##是一个下标,0指向第一个参数,

2020-12-03 21:26:46 1233

原创 CMake 在Linux上使用动态库和静态库

上一篇我们生成了动态库和静态库,这一篇我们要将他们使用起来。目录结构:将上一篇生成的libhello.so放到dynamic目录中,libhello_static.a放到static目录中,build空目录是将来生成文件存放的目录。一、使用动态库hello.h文件中:#ifndef HELLO_H#define HELLO_H#include <iostream>void HelloFunc();#endifmain.cpp#include "hello.h"i

2020-11-30 20:52:47 4974

原创 CMake 在Linux上编译生成动态库和静态库

目录结构:仍然是建立一个空的目录build目录,以便让cmake生成的那些文件存放在这个目录中。hello.h#ifndef HELLO_H#define HELLO_H#include <iostream>void HelloFunc();#endifhello.cpp#include "hello.h"void HelloFunc(){ std::cout << "Hello My Linux !" << std::endl;}

2020-11-30 19:56:01 1963

原创 CMake 多个源文件,多个目录(二)

目录结构:一共有3个CMakeLists.txt一个顶级CMakeLists.txt,放在当前工程的根目录下:# CMake 最低版本号要求cmake_minimum_required(VERSION 3.5)# 设置工程名project (hello_cmake)aux_source_directory(. DIR_SRCS)# 添加头文件路径include_directories("${PROJECT_SOURCE_DIR}/hello")include_directorie

2020-11-30 18:01:45 1331

原创 CMake 多个源文件,多个目录(一)

目录结构:hello.h#ifndef HELLO_H#define HELLO_H#include <iostream>void hello();#endifhello.cpp#include "hello.h"void hello(){ std::cout << "Hello " << std::endl;}world.h#ifndef WORLD_H#define WORLD_H#include <iostrea

2020-11-30 17:24:33 5503 2

原创 CMake 同一目录,多个源文件

include_directoriesinclude_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...])它相当于g++选项中的-I参数的作用,也相当于环境变量中增加路径到CPLUS_INCLUDE_PATH变量的作用,这样在使用该头文件的地方,只需要#include "xx.h"就可以,不需要再添加相对路径。aux_source_directory在目录中查找所有源文件aux_source_directory(<dir> <

2020-11-30 15:59:09 1400

原创 CMake PROJECT_BINARY_DIR和PROJECT_SOURCE_DIR的理解

官方的解释:PROJECT_BINARY_DIRcontains the full path to the top level directory of your build treePROJECT_SOURCE_DIRcontains the full path to the root of your project source directory,i.e. to the nearest directory where CMakeLists.txt contains thePROJEC

2020-11-30 11:51:58 7849 1

原创 CMake之message()函数的使用和打印变量值

message :为用户显示一条消息message( [STATUS|WARNING|AUTHOR_WARNING|FATAL_ERROR|SEND_ERROR] "message to display" ...)可以用下述可选的关键字指定消息的类型:(无) = 重要消息; STATUS = 非重要消息; WARNING = CMake 警告, 会继续执行; AUTHOR_WARNING = CMake 警告 (dev), 会继续执行; SEND_ERROR = CMake 错误, 继续

2020-11-30 11:07:19 27184

原创 《Unix环境高级编程第三版》apue.3e在Linux上编译中遇到问题的处理

一、问题描述:make,遇到错误:cannot find -lbsd 。二、原因:缺少缺少libbsd文件。三、解决方法:1、Fedora 系列(通过yum来下载更新软件)#yum install libbsd#yum install libbsd-devel安装完成后就可以去apue.3e目录make了。2、Ubuntu 系列(通过apt-get来下载和更新软件)sudo apt-get install libbsd-dev安装完成后就可以去apue.3e目录make了。我遇到的问题

2020-11-29 17:02:13 649

转载 CMake 入门学习1 Hello World(转)

CMake 入门学习1 Hello World分享一次学习cmake基础的过程CMake 入门2/5:第一个程序 helloworldCmake知识----编写CMakeLists.txt文件编译C/C++程序

2020-11-24 20:18:28 236

原创 windows上Qt中遇到关于C2039:XXX不是XXX的成员的奇怪报错

vs2017编译器,在win10上,头文件中有中文注释,文件编码为UTF-8中文注释下面一行的成员函数(或者中文注释同一行,前面的成员函数),在这个对应的cpp文件中,报出C2039:XXX不是XXX的成员的奇怪报错解决方法方法:(1)删除中文注释,或者改成英文注释。(2)文件编码为UTF-8 BOM格式,就没有问题。(3)中文注释和代码之间空一行参考:关于C2039:XXX不是XXX的成员的奇怪报错...

2020-11-21 18:04:50 7590 3

原创 利用std::map和std::greater对key进行降序排列

std::map默认是用std::less对key进行升序排列的,利用std::greater可以对key进行降序排序。在Qt中,如果我们需要对QString或者int为key的map进行降序排列,除了自定义类型外,其实还可以利用std::map和std::greater实现代码:#include <QCoreApplication>#include <map>#include <algorithm>#include <QDebug>int

2020-10-26 17:54:30 3180

原创 对QMap中的key进行自定义排序

QMap的默认排序是按照key的升序进行排序。如果我们想改变QMap的key的排序规则,则需要提供operator<()QMap’s key type must provide operator<(). QMap uses it to keep its items sorted, and assumes that two keys x and y are equal if neither x < y nor y < x is true.Qt帮助文档给的例子: #ifnd

2020-10-25 17:17:52 12318

原创 std::map删除某个或者某些元素的示例

#include <iostream>#include <map>#include <string>using namespace std;int main(){ typedef std::map<string, int> StringIntMap; StringIntMap coll; coll["aa"] = 1; coll["bb"] = 2; coll["cc"] = 1; coll["dd"] = 2; int value

2020-10-21 21:35:13 2390

原创 C++标准库(第2版)第7章map的一个运行期指定排序规则的示例

《C++标准库(第2版)》【德】Nicolai M.Josuttis著,侯捷 译这本书,第7.8.6的一个综合实例:运用Map、String并于运行期指定排序规则该例子展现了以下技巧:如何使用map,包括使用关联式数组(associative array)接口。如何撰写和使用函数对象(function object)。如何在运行期定义排序规则(sorting criterion)。如何在“大小写无关”的情况下比较字符串(string)。#include <iostream>#

2020-10-21 21:08:41 137

原创 STL算法之lexicographical_compare的基本用法

我们这里只掌握lexicographical_compare的基本用法:需要包含头文件 algorithm(1)template <class InputIterator1, class InputIterator2>bool lexicographical_compare (InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIt

2020-10-21 20:54:31 2676 1

原创 利用qss设置QTextEdit背景颜色(背景透明)不生效的解决方法

最近在遇到设置QTextEdit或者QTextEdit的派生类,利用qss设置background-color不生效,记录出现这种问题的情形,以及对应的解决办法。问题的出现:新建一个基于QWidget的工程,勾选ui文件,在界面上拖放一个QTextEdit,(可以添加一个布局,也可以不用),其余保持默认设置就行。在widget.cpp的构造函数中添加代码:setAttribute(Qt::WA_TranslucentBackground);this->setStyleSheet("QTex

2020-10-13 14:28:17 8762 1

原创 利用QPushButton和QButtonGroup实现导航按钮

先看看效果:利用QButtonGroup实现按钮的互斥选中。取消选择,和选择第二个(可以通过参数控制选择哪个按钮)ui文件:左侧的按钮都需要设置为Checkable或者代码里去设置// 在ui文件里设置也是一样的效果,ui文件里勾选checkable ui->homePushButton->setCheckable(true); ui->savePushButton->setCheckable(true); ui->printPu

2020-10-09 17:56:35 1416

原创 利用QSS自由控制QPushButton中图片和文字的位置

参考;QPushButton通过Qss控制背景图片位置

2020-09-30 18:14:26 10920 10

原创 Cef3中js与C++交互(六)—— JS异步回调

官方文档:Asynchronous JavaScript Bindingsgithub上一个比较好的例子:https://github.com/fanfeilong/cefutil/blob/master/doc/CEF_JavaScript_Cpp.md另外参考了这篇文章:CEF:C++和JS交互

2020-09-16 21:06:29 940 3

原创 Cef3中js与C++交互(五)—— JS简单回调

Native code can execute JS functions by using the ExecuteFunction()and ExecuteFunctionWithContext() methods. The ExecuteFunction() methodshould only be used if V8 is already inside a context as described inthe “Working with Contexts” section. The Execu.

2020-09-16 20:50:58 1659

原创 Cef3中js与C++交互(四)——CefV8Accessor

JS对象可选择使用一个与之关联的CefV8Accessor以提供一个源生的getting和setting值的实现套路:CefRefPtr<CefV8Accessor> accessor = …;CefRefPtr<CefV8Value> obj = CefV8Value::CreateObject(accessor);接下来就是继承CefV8Accessor,重写Get和Set接口class MyV8Accessor : public CefV8Accessor {pu

2020-09-16 19:38:01 1718

原创 Cef3中js与C++交互(三)——JS扩展

注册新的V8扩展关联指定的js扩展像window绑定一样除了为每个框架 加载到上下文之外,一旦加载就不能修改,当一个扩展已经加载并试图在扩展加载中访问DOM就会出现DOM不存在的crash。扩展应该在CefRenderProcessHandler::OnWebKitInitialized()函数中使用CefRegisterExtension函数注册。看看官方的例子:void MyRenderProcessHandler::OnWebKitInitialized() { // Define the

2020-09-16 14:51:16 1079

原创 Cef3中js与C++交互(二)——window绑定JS函数

Ce3中的JS函数CEF supports the creation of JS functions with native implementations.Functions are created using the CefV8Value::CreateFunction() staticmethod that accepts name and CefV8Handler arguments. Functions canonly be created and used from within a

2020-09-16 11:09:18 1976

原创 Cef3中js与C++交互(一)——窗口绑定

看了网上的一些博客和教程,还是有点迷糊。再回头看官方文档https://bitbucket.org/chromiumembedded/cef/wiki/JavaScriptIntegration.md还自己用例子来验证吧。Qt工程中的目录结构,VS2017编译器(Qt用的是Qt5.14.2)这里的文件都和之前的一样,我这里就不再赘述了,我会放到百度云上,大家下载下来看就一目了然了。simple_app.h#pragma once#include "include/cef_app.h"

2020-09-15 21:29:12 2072

原创 windows下Qt中的第一个Cef3程序

上一篇我们编译了vs2017版本的Cef3,记得那一步的需要修改成/MD,编译出Debug版本和Release版本。我们还是以cef_binary_75.0.1+gb5e74dd+chromium-75.0.3770.80_windows64.tar.bz2这个版本为准。(原因见上一篇博客)。我们修改simple_app.cc中的url为"http://www.baidu.com",否则会发现打开cefsimple.exe时半天显示不了网页。(原链接为"http://www.google.com",不科

2020-09-15 16:17:14 1921 13

cef_binary_75.0.1+gb5e74dd+chromium-75.0.3770.80_windows64.tar.bz2

cef_binary_75.0.1+gb5e74dd+chromium-75.0.3770.80_windows64.tar.bz2

2021-03-24

todo-list.zip

QML编写的1.实现了一个简单的待办事项;2.删除勾选的一行记录,也可以删除多行已经勾选的记录;用C++继承QAbstractListModel实现了model,用QML中的ListView显示

2019-05-23

QML自定义菜单样式

利用QML写的菜单样式,适合项目中用,定义了MenuItem和MenuBar的样式。实现是在Qt5.12.0中,应该是Qt5.10及以上都可以的。

2019-05-04

QsLogDemo的工程,可在界面显示日志,同时将日志写入文本

自己做的QsLog的使用demo,连接信号与槽,可以将日志显示在界面和本地文本也会有日志。Qt5.8.0用可以运行,Qt5.x都可以运行。

2018-11-01

QML state状态切换实例

QML中利用State,切换状态的代码小例子,点击左上角的刷新按钮,会切换状态

2018-06-29

抽象工厂Red_Shape的C++实现

抽象工厂Red_Shape的C++实现,设计模式中的抽象工厂模式

2018-02-02

空空如也

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

TA关注的人

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