- 博客(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
973
原创 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
5214
1
转载 Godot基础教程01:实例-控制大炮
Godot基础教程01:实例-控制大炮本节将讲解如何做一个简单的实例:用方向键左右控制大炮左右移动用方向键上下控制大炮炮口方向用空格键发射炮弹大概就是这个效果:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T9puPWyu-1611481146972)(./images/2.gif)]素材准备我自己用ps抠图,把图片抠出来,放到resources文件夹中:分别是大炮的架子,用方块代替一下,炮管和炮弹。场景布置说明Node2D : 根节点,
2021-01-24 17:48:21
2081
原创 关于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
3234
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
2932
2
原创 Qt+Cef3离屏渲染(二)
还是以windows上vs2017 release版本运行的程序为例。接上一篇,我们只是将离屏渲染的每一帧图片QImage,以异步事件的方法发送到了目标QWiget上,然后再将QImage绘制到屏幕上。留下了一些待处理的问题:滚轮事件鼠标的点击事件鼠标hover到链接上,鼠标形状的变化键盘输入输入框的右键弹出层我们这篇博客就围绕这些问题进行处理。一、离屏渲染的滚轮事件的处理滚轮事件的处理最为简单。在CefOSRWidget头文件中:protected: //其余代码与前面一篇相
2020-12-19 10:34:43
3227
5
原创 Qt+Cef3离屏渲染(一)
离屏渲染(Off-Screen Rendering)在离屏渲染模式下,CEF不会创建原生浏览器窗口。CEF为宿主程序提供无效的区域和像素缓存区,而宿主程序负责通知鼠标键盘以及焦点事件给CEF。离屏渲染目前不支持混合加速,所以性能上可能无法和非离屏渲染相比。离屏浏览器将收到和窗口浏览器同样的事件通知,下面介绍如何使用离屏渲染:(1)实现CefRenderHandler接口。除非特别说明,所有的方法都需要覆写。调用CefWindowInfo::SetAsOffScreen(),将CefWindowInf
2020-12-19 10:34:32
8696
19
转载 Linux进程间通信——信号集函数
我们已经知道,我们可以通过信号来终止进程,也可以通过信号来在进程间进行通信,程序也可以通过指定信号的关联处理函数来改变信号的默认处理方式,也可以屏蔽某些信号,使其不能传递给进程。那么我们应该如何设定我们需要处理的信号,我们不需要处理哪些信号等问题呢?信号集函数就是帮助我们解决这些问题的。有关Linux进程间使用信号通信的更多内容,可以参阅我的另一篇文章—— Linux进程间通信——使用信号下面是信号函数集:1、int sigemptyset(sigset_t *set);该函数的作用是将信号集初始
2020-12-15 21:02:03
199
转载 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
470
转载 关于获取时间戳函数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
1661
转载 pthread_key_t和pthread_key_create()详解
下面说一下线程中特有的线程存储, Thread Specific Data 。线程存储有什么用了?他是什么意思了?大家都知道,在多线程程序中,所有线程共享程序中的变量。现在有一全局变量,所有线程都可以使用它,改变它的值。而如果每个线程希望能单独拥有它,那么就需要使用线程存储了。表面上看起来这是一个全局变量,所有线程都可以使用它,而它的值在每一个线程中又是单独存储的。这就是线程存储的意义。下面说一下线程存储的具体用法。创建一个类型为 pthread_key_t 类型的变量。调用 pthread_
2020-12-09 10:56:41
736
原创 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
313
转载 linux中fork()函数详解
转自:https://blog.youkuaiyun.com/jason314/article/details/5640969一、fork入门知识一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于
2020-12-05 12:44:21
747
原创 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
2598
原创 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
1390
原创 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
7118
原创 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
2258
原创 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
1708
原创 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
6071
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
1508
原创 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
9293
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
37731
原创 《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
825
转载 CMake 入门学习1 Hello World(转)
CMake 入门学习1 Hello World分享一次学习cmake基础的过程CMake 入门2/5:第一个程序 helloworldCmake知识----编写CMakeLists.txt文件编译C/C++程序
2020-11-24 20:18:28
281
原创 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
9764
4
原创 利用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
3879
原创 对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
13849
原创 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
2538
原创 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
168
原创 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
3293
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
10311
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
1635
原创 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
1104
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
1924
原创 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
1979
原创 Cef3中js与C++交互(三)——JS扩展
注册新的V8扩展关联指定的js扩展像window绑定一样除了为每个框架 加载到上下文之外,一旦加载就不能修改,当一个扩展已经加载并试图在扩展加载中访问DOM就会出现DOM不存在的crash。扩展应该在CefRenderProcessHandler::OnWebKitInitialized()函数中使用CefRegisterExtension函数注册。看看官方的例子:void MyRenderProcessHandler::OnWebKitInitialized() { // Define the
2020-09-16 14:51:16
1319
原创 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
2368
原创 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
2363
原创 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
2116
13
cef_binary_75.0.1+gb5e74dd+chromium-75.0.3770.80_windows64.tar.bz2
2021-03-24
todo-list.zip
2019-05-23
QsLogDemo的工程,可在界面显示日志,同时将日志写入文本
2018-11-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人